0

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

但如果我将利润数字更改为 int(意味着权益和利润都将具有 int 值),例如 52、7,它给出的输出为 0.00。那里有什么问题?我认为它已被格式化为精度为 2 的浮点数。

4

2 回答 2

1

在 python2.x中,/如果两个参数都是整数类型,则进行整数除法(结果是整数,向下截断)。“简单”的解决方法是:

from __future__ import division

在脚本的最顶部,或者在划分之前从其中一个参数中构造一个浮点数:

your_roi = float(profit) / stake * 100

Python 也有一个整数除法运算符 ( //),因此您仍然可以根据需要执行整数除法 - 即使您from __future__ import division

于 2013-01-28T15:45:28.197 回答
0

如果利润为integer,则除法将是整数除法而不是双除法,您会将结果向下舍入到最接近的整数。即使您将数字格式化为浮动打印,它仍然是 0,因为它在上面的分配中被四舍五入。

于 2013-01-28T15:45:41.880 回答