请看这个问题

SELECT max( val_amd ) FROM `best_deposits`

表中的最大值等于14.6(字段的类型为float),
但它返回14.3599996566772
为什么会这样,我如何才能得到确切的价值?
多谢

最佳答案

花车是邪恶的!
千万不要用浮点数来存储数量或价格。相反,使用int并以美分为单位存储金额。这是永远解决这些问题的唯一方法。
为什么会这样:因为floats在很多情况下(例如在您的情况下为0.6)不能被完全保存
PS:到目前为止,我们对不同的语言有过无数次这样的问题:
Use Float or Decimal for Accounting Application Dollar Amount?
PHP rounding problem (5.2.3)?
Rounding problem with double type
Javascript rounding v c# rounding
Python rounding problem
... and a lot more
编辑:对你的评论:如我所说:
使用int并将金额存储在
美分
(或者您可以使用十进制(10,2)(或者您需要多大/多大的十进制位)。。。不知道这是怎么回事)

07-25 21:22