为什么会这样?
>>> max(2, 2.01)
2.0099999999999998
答案 0 :(得分:5)
以二进制表示的数字2.01是:
b10.00000010100011111100001010001111110000101000111111000010100011111100...
计算机仅使用有限数量的数字来存储浮点值,但2.01的二进制表示需要无限多个数字;因此,舍入到最接近的可表示值:
b10.000000101000111111000010100011111100001010001111110
以十进制表示,这个数字恰好是:
2.0099999999999997868371792719699442386627197265625
当你打印出来时,它会再次四舍五入到十七个十进制数字,给出:
2.0099999999999998
答案 1 :(得分:3)
浮点数不是精确值,而是近似值。结果基本上是您输入的实数的下一个最接近的浮点数。
答案 2 :(得分:2)
,因为:
>>> 2.01
2.0099999999999998
这是存储浮点数的方式
答案 3 :(得分:0)
浮点数舍入。它试图说2.01,但不能完全表达它作为一个浮点数,所以它尽力而为。