我正在使用MySQL 服務器版本:5.6.20-1 + deb.sury.org〜trusty + 1-log - (Ubuntu)並且在計算小數時出現問題。這裏是我的情況:MySQL的十進制計算不一致
我有一個十進制字段的表DECIMAL(65, 24)
。我需要它,因爲它包含貨幣數據。我也爲同一類型的不同貨幣(DECIMAL(65, 24)
)保留一個兌換比率,這樣我可以用其他貨幣的相同價格。這種比例通常很小,如0.000030769230769231000000
。
的問題出現了,當我試圖聚集一些的價格,當且僅當我把它寫這種方式:
SELECT SUM(price * conversion_rate), COUNT(DISTINCT some_field)
FROM products
GROUP BY some_other_field
而問題是,結果並不一致!我的意思是當我重新運行查詢結果改變!通常它會在兩個案例之間變化,而且看起來是隨機的變化是相當大的,例如Case1 - Case2 = $7,025.13
! (當然這取決於產品的價格和數量)。如果我省略DISTINCT
或COUNT
函數,問題就解決了。
和MySQL說this about decimal data-type:
的decimal和numeric類型存儲精確的數值數據。使用這些 類型時,保留精確的精度非常重要,對於使用貨幣數據的示例 。
有沒有人有任何想法如何克服這個問題?
什麼是數據類型的價格領域的? – Grice 2014-09-24 13:49:44
兩者都是'DECIMAL(65,24)' – Mehran 2014-09-24 13:52:12
顯示一些示例數據,以便我們可以嘗試重新提出您所詢問的內容。 – 2014-09-24 14:00:28