我知道大多数小数都没有确切的浮点表示形式(浮点数学运算符是否损坏?)。
但是,当两个值实际上都具有丑陋的十进制表示形式时,我看不出为什么4*0.1
将其很好地打印为0.4
,但3*0.1
不是这样:
>>> 3*0.1
0.30000000000000004
>>> 4*0.1
0.4
>>> from decimal import Decimal
>>> Decimal(3*0.1)
Decimal('0.3000000000000000444089209850062616169452667236328125')
>>> Decimal(4*0.1)
Decimal('0.40000000000000002220446049250313080847263336181640625')
0.3000000000000000444089209850062616169452667236328125
作为0.30000000000000004
和0.40000000000000002220446049250313080847263336181640625
作为.4
,即使他们似乎有相同的精度,因此不回答这个问题。