我知道大多数小数没有精确的浮点表示(浮点数算法坏了吗?)。
但是我不明白为什么 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')