Python 3.x Python3中奇怪的除法结果
我认为分区的运作有些不一致,但我不确定 在下面的代码中,我希望a//c为100.0,或者b//c为-99.0Python 3.x Python3中奇怪的除法结果,python-3.x,division,Python 3.x,Division,我认为分区的运作有些不一致,但我不确定 在下面的代码中,我希望a//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正好是0.01的100倍(就内部表示浮点而言),这不是真的。操作员/执行除法并对结果进行分层,因此内部数字可能略小于100.0,这导致将其分解为9
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
正好是0.01
的100倍(就内部表示浮点而言),这不是真的。操作员/
执行除法并对结果进行分层,因此内部数字可能略小于100.0
,这导致将其分解为99.0
此外,Python3.x用于显示与Python2.x相比的浮点数。这意味着
1.0/0.01
的结果(尽管内部略小于100.0
)将显示为100.0
,因为算法确定该数字足够接近100.0
,被视为等于100.0
。这就是为什么1.0/0.01
显示为100.0
的原因,尽管这在内部可能并不表示为确切的数字。感谢您提供详细的答案。尽管逻辑是明确的,但这种行为在这种直观的操作中会产生误导。@Baba:也许,但这是使用浮点数的注意事项之一。浮点数的数量远远超过了计算机所能准确表示的数量,所以在使用浮点数时要注意这一点。