Python小数点自动四舍五入为0

Python small decimals automatically round to 0

我有一个简单的问题:

print 1 / 100

returns

0

print float(1 / 100)

returns

0.0

为什么会这样?不应该 return 0.01 吗?感谢您的帮助。

简单的解决方案!

print 1 / float(100)

你的问题是默认情况下 Python 2 除法运算符将进行整数除法(向下舍入为整数)。通过将其中一个操作数设为浮点数,Python 将以预期的方式除法。 float(1 / 100) 你几乎就在那里,但是所有这些完成的是将 1 除以 100,等于零,然后将零转换为浮点数。

这是Python 2中的公认问题,已在Python 3中修复。如果你厌倦了一直写x / float(y),你可以from __future__ import division使除法运算符的行为如 Python 3.

你正在做整数除法。你写的是,出于所有意图和目的:

float(int(1)/int(10))

例如:

assert float(10/3) == 3.0  # True

您需要至少有一个隐式或显式浮点数。所有这些都有效:

float(1.0/100.0)
float(1.0/100)
float(1/100.0)
float(float(1)/float(100))
etc...

您正在进行整数除法,当需要小数(浮点数)时,您可以通过在末尾放置小数来断言整数为浮点数,即

    print 1 / 100.