Python奇怪的操作?

时间:2012-11-07 09:28:18

标签: python math python-3.x operation

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

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

5 个答案:

答案 0 :(得分:5)

浮点运算的精度有限,而在python中,这些限制已有详细记载。你可以阅读它here

答案 1 :(得分:3)

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

答案 2 :(得分:3)

已知浮点运算会导致错误。

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

如果您需要精确计算,请使用the decimal module

答案 3 :(得分: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 

答案 4 :(得分:0)

您要添加的数字是 float 格式。这意味着它有小数位。第二行数学的数字都是整数,因此它们是整数形式。已知浮点形式在执行数学方程式时会抛出错误。