>>> 2.04 * 100
204.0
>>> 2.05 * 100
204.99999999999997
在上面的示例中,如果多个2.04乘100,则它给出204.0,如果2.05乘以相同的数,则返回204.99999997。现在,如果你继续尝试进一步的数字,你会发现2.06,2.08等将给出确切的数字。这意味着乘法后的数字是偶数将返回xxx.0,而奇数将返回xxx.999997。为什么会这样?
答案 0 :(得分:3)
哦,幸运的是,你在编程生涯中遇到了一个里程碑,floating point numbers。
简短版本是因为我们不能代表基数2中的1/10(最终数字存储为二进制),所以编程语言必须创建近似值。在这种情况下,Python试图通过给出合理的2.05 * 100的近似表示来提供帮助。
当编程和处理浮点值时,你可以使用epsilon值进行比较,说"如果我期望和浮点运算足够接近,则认为是真的。"
通过查看sys
模块,您可以看到Python安装所使用的epsilon值:
>>> import sys
>>> sys.float_info.epsilon
2.220446049250313e-16