我认为除法操作有些不一致,但我不确定。
在下面的代码中,我希望// 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
由于
答案 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
的原因,即使这可能不会在内部表示为该数字。