浮点数正常,整数输出错误 Python 2.7

0 投票
2 回答
843 浏览
提问于 2025-04-17 13:57

可能重复的问题:
为什么这个除法在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

撰写回答