1

有人可以解释一下为什么下面的代码表现得像这样吗?(它是 Windows7 x64 命令行中的 Python)

>>>2.22 + 0.22
2.44000000000000004
>>>(222+22)/100
2.44
4

5 回答 5

5

浮点运算在精度上是有限的,而在 python 中,这些限制是有据可查的。你可以在这里阅读

于 2012-11-07T09:31:20.177 回答
3

所有的浮点数学都是这样的,并且基于 IEEE 标准。

于 2012-11-07T09:30:35.683 回答
3

众所周知,浮点运算会导致错误。

http://en.wikipedia.org/wiki/IEEE_floating_point

如果您想要精确计算,请使用decimal模块。

于 2012-11-07T09:30:59.093 回答
1

这是由于数据格式。

2.22 + 0.22 != 2.44  // both are float
// when you use them to calculate, they are giving consistently "wrong" results
// because the datatype in itself gets incorrect when moving into deep comma space
(222+22) / 100 // becomes this in calculation
222+22 = 244 --> 244/100 = 2.44 
于 2012-11-07T09:32:06.873 回答
0

您添加的数字是浮点格式。这意味着它有小数位。数学的第二行数字都是整数,所以它们是整数形式。众所周知,浮点形式在执行数学方程式时会引发错误。

于 2012-11-07T10:29:17.307 回答