【发布时间】:2013-12-24 08:06:12
【问题描述】:
遇到python(2.7.3)一个奇怪的浮点数问题。
In [4]: 17 * 0.1
Out[4]: 1.7000000000000002
但是
In [5]: print(17*0.1)
1.7
两个问题:
- 为什么
17*0.1是1.7000000000000002? - 为什么
print没问题?
【问题讨论】:
-
1. IEEE-754 浮点规则。 2. IEEE-754 浮点规则。 3. 考虑two's complement。
-
print不很好。它只是显示数字较少的数字,以提供更好、更直观的表示。您通常不在乎数字是否有 10^-16 左右的错误。如果您想控制显示的位数而不是使用格式字符串:print('{.Nf}'.format(17*0.1))。更改N以更改要显示的位数。