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.
我有一个简单的问题:
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.