Python小小数自动舍入为0

时间:2016-03-16 00:29:13

标签: python floating-point decimal

我有一个简单的问题:

print 1 / 100

返回

0

print float(1 / 100)

返回

0.0

为什么会这样?它不应该返回0.01吗?谢谢你的帮助。

3 个答案:

答案 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.