奇怪的除法导致python 3

Bab*_*aba 7 division python-3.x

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

在下面的代码中,我希望// 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)
Run Code Online (Sandbox Code Playgroud)

得到:

100.0
99.0
-100.0
-100.0
Run Code Online (Sandbox Code Playgroud)

谢谢

Sim*_*ser 3

这是由浮点数的表示方式决定的。1.0确切地说是 100 倍0.01(就浮点在内部表示而言)是不正确的。运算符//对结果执行除法并对结果进行取整,因此内部数字可能略小于100.0,这会导致其被取整为99.0

此外,与 Python 2.x 相比,Python 3.x 使用不同的方法来显示浮点数。1.0 / 0.01这意味着尽管内部略小于,但结果100.0将显示给您,100.0因为算法确定该数字足够接近,100.0可以被视为等于100.0。这就是为什么1.0 / 0.01向您显示的原因100.0,尽管这可能不会在内部准确地表示为该数字。