我正在使用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