奇怪的除法导致python 3

时间:2015-06-14 15:55:15

标签: python-3.x division

我认为除法操作有些不一致,但我不确定。

在下面的代码中,我希望// c为100.0,或b // c为-99.0。

a = 1.0
b = -1.0
c = 0.01

print (a/c)
print (a//c)
print (b/c)
print (b//c)

给出:

100.0
99.0
-100.0
-100.0

由于

1 个答案:

答案 0 :(得分:3)

这是由于floating point numbers are represented的方式。 1.0恰好是0.01的100倍(就内部浮点数而言)。运算符//执行除法并对结果进行分层,因此内部数字可能略小于100.0,这导致它被置于99.0

此外,与Python 2.x相比,Python 3.x使用a different approach向您显示浮点数。这意味着1.0 / 0.01的结果虽然在内部略小于100.0,但会显示为100.0,因为算法确定该数字足够接近100.0被认为等于100.0。这就是为什么1.0 / 0.01被显示为100.0的原因,即使这可能不会在内部表示为该数字。