浮点数正常,整数输出错误 Python 2.7
可能重复的问题:
为什么这个除法在Python中不工作?
我有这个代码,运行得很好。
def roi(stake, profit):
your_roi = profit / stake * 100
return your_roi
def final_roi():
roi1 = roi(52, 7.5)
print "%.2f" % roi1
final_roi()
但是如果我把利润的数字改成整数(也就是说,赌注和利润都会变成整数),比如52和7,它的输出却是0.00。这里出什么问题了?我以为它已经格式化成了小数,精确到两位小数。
2 个回答
0
如果利润是一个整数
,那么进行除法运算时就会变成整数除法,而不是小数除法。这意味着结果会被向下取整,变成最接近的整数。即使你在打印的时候把这个数字格式化成浮点数,它仍然会显示为0,因为在之前的赋值过程中已经被向下取整了。
1
在python2.x中,如果你用/
来除两个整数,结果会是整数,并且会向下取整。这意味着如果你除的结果是个小数,python会把它直接舍去,只留下整数部分。要解决这个问题,有个简单的方法,就是在你的脚本最上面加上:
from __future__ import division
或者在除法之前,把其中一个数变成浮点数,这样就能得到小数结果了:
your_roi = float(profit) / stake * 100
另外,Python还有一个专门用于整数除法的运算符//
,所以如果你想要整数结果,依然可以使用这个运算符,即使你已经使用了from __future__ import division
。