代码如下:
a = 16 + 23.45 + 13.32
b = 13.32 + 23.45 + 16
print(a, '\t', b)
运行结果是:
52.77 52.769999999999996
请教一下为什么调换数字顺序后结果不一样?
代码如下:
a = 16 + 23.45 + 13.32
b = 13.32 + 23.45 + 16
print(a, '\t', b)
运行结果是:
52.77 52.769999999999996
请教一下为什么调换数字顺序后结果不一样?
python中浮点数的运算是不精确的,二进制对很多浮点数无法准确表示只能用一个近似值代替,而当使用这些以近似值代替的浮点数进行进算时本质上是这些进似值参与了运算,出来的结果也就是进似值运算后的结果。
a中先执行16+23.45,得到的是一个精确结果,然后再执行+13.32 得到的结果依旧是精确结果
b中先执行浮点数相加,得到不精确的结果,再执行+13,得到一个不精确的结果
(本人也只是大概了解,具体的可以看看楼下的解释)