其实准确的进位规则是二进制浮点数的:
>>> round(1.5,0)# 1.5d -> 0x3FF8000000000000 -> 1.5, 按照5后为0处理,奇进偶不进
2.0
>>> round(2.5,0)# 2.5 -> 0x4004000000000000 -> 2.5, 按照5后为0处理,奇进偶不进
2.0
>>> round(1.15,1)#1.15 ->0x3FF2666666666666 -> 1.14999999999999991118215802999 按照4处理,退位
1.1
>>> round(1.25,1)# 1.25 ->0x3FF4000000000000 ->1.25 同2.5退位
1.2
>>>
可以认为进位首先计算的是与整数间的差距,如果差距相等,才会出现奇进偶不进。注意其中1.15由于进制问题到1.1和1.2距离不同,所以不是十进制的round结果。
>>> abs(1.25-1.2)==abs(1.25-1.2)
True
>>> abs(1.15-1.2)==abs(1.15-1.1)
False