进行Python aritmetic操作

pet*_*mlm 0 python floating-point

可能重复:
python限制浮动到两个小数点

如果我这样做:12.45-12

在Python中我得到的答案是:0.44999999999999929

我是这么做的:0.45?

顺便说一下,我确实记得这样做:12.45-12.0但没有结果.

Tim*_*ker 5

这是因为许多小数不能用二进制精确表示.

例如,0.25可以:它是0.01(0*1,0*1/2,1*1/4).0.1不能(0.0001100110011...),就像你不能写1/3作为完整的小数(0.3333333333...).

如果你这样做

print(12.45-12)
Run Code Online (Sandbox Code Playgroud)

你得到

0.45
Run Code Online (Sandbox Code Playgroud)

因为print只显示第一个有效数字.

有关优秀摘要,请参阅Python文档.

如果您确实关心十进制值是否准确(例如,为了避免金融机构中的超人III场景),请查看Decimal模块.