【发布时间】:2014-03-09 14:46:08
【问题描述】:
>>> sum([0.3, 0.1, 0.2])
0.6000000000000001
>>> sum([0.3, 0.1, 0.2]) == 0.6
False
如何使结果恰好为 0.6? 我不想将结果四舍五入到一定数量的十进制数字,因为那样我可能会失去其他列表实例的精度。
【问题讨论】:
-
为什么你需要正好 0.6?如果
1.0/3+2.0/3不完全等于1,你会遇到同样的问题吗? -
我想要 0.6,因为这是我所期望的结果。是的,它会是同样的问题。
-
已经有很多关于这个的帖子,例如:stackoverflow.com/questions/5595425/…
-
@user2460978 恐怕答案是调整你的期望。没有一种好的通用方法可以让有理数的数学像您期望的那样工作,同时仍然允许平方根和正弦之类的东西。
-
欢迎使用浮点。 0.6 不能用二进制浮点数精确表示。