进行Python算术运算

时间:2010-11-10 10:56:16

标签: python floating-point

  

可能重复:
  python limiting floats to two decimal points

如果我这样做:12.45-12

在Python中

我得到的答案是:0.44999999999999929

我是这么做的:0.45?

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

3 个答案:

答案 0 :(得分: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)

你得到了

0.45

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

请参阅Python docs以获取精彩摘要。

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

答案 1 :(得分:2)

完全没问题,但你需要谷歌(并在StackOverflow上搜索)“IEEE 754”。

编辑:看看,例如在这里:Inaccurate Logarithm in Python或此处:Another floating point question

答案 2 :(得分:2)

同样在Python 2.4中,如果您需要更高的准确度,请查看decimal模块。