【发布时间】:2015-07-01 22:44:57
【问题描述】:
我想我明白为什么 0.1 + 0.2 是 0.30000000000000004,但是遵循相同的逻辑为什么 0.2 + 0.2 = 0.4? 0.2 不是二进制数无法获得的值吗? 感谢您的宝贵时间。
【问题讨论】:
-
其实是
'0.40000000000000002220446049250313080847263336181640625'。默认表示仍为四舍五入。 -
@MartijnPieters 我认为您需要解释为什么 python 将其打印为 0.4。 python是否四舍五入到一定位数?
-
@MartijnPieters 感谢您的回答:为什么 python 将其四舍五入为 0.4 但不将 0.2 + 0.1 舍入为 0.3?
-
另请注意,这“适用”任何形式的添加
x + x:例如,1.234 + 1.234的结果将打印为2.468。这本质上是因为如果x是最接近实数v的可表示二进制浮点数,那么(忽略溢出和次正规数)x + x必须是最接近实数v + v的可表示二进制浮点数。 -
@MarkDickinson 这也适用于次正规数。
标签: python floating-point