我有一个简单的问题:
print 1 / 100
返回
0
和
print float(1 / 100)
返回
0.0
为什么会这样?它不应该返回0.01吗?谢谢你的帮助。
答案 0 :(得分:2)
简单的解决方案!
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中运行
答案 1 :(得分:1)
你正在进行整数除法。你写的是出于所有意图和目的:
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...
答案 2 :(得分:0)
你正在进行整数除法,当期望一个小数(浮点数)时,你可以通过在末尾放置一个小数来断言一个整数为浮点数,即
print 1 / 100.