为什么python为具有值的函数返回0.0

时间:2014-09-26 02:46:58

标签: python function

def on_base_percentage(h, bb, hbp, ab, sf):
    return float((h + bb + hbp)/(ab + bb + hbp + sf))

print on_base_percentage(1,2,3,4,5)

为什么Python在实际存在函数值时会打印0.0

2 个答案:

答案 0 :(得分:4)

你必须在> 之前进行浮动,而不是之后。

执行除法,因为它在整数之间划分,所以产生0。然后,您将0设为浮点数,然后打印0.0

试试这种方式

def on_base_percentage(h, bb, hbp, ab, sf):
    return float(h + bb + hbp)/float(ab + bb + hbp + sf)

print on_base_percentage(1,2,3,4,5)
0.428571428571

答案 1 :(得分:3)

您的功能基本上是评估:

(1 + 2 + 3)/(4 + 2 + 3 + 5)

6 / 14

我假设您正在使用python2.x,它将在此处执行 integer 除法(截断结果以最终得到一个整数。在这种情况下,截断的结果为{{ 1}},然后你用它来构造一个浮点数(0)。这里一个简单的解决方案就是在分子或denomonator上调用float来强制真正的除法:

0.0

替代解决方案正在启用true_division:

float((h + bb + hbp))/(ab + bb + hbp + sf)

在这种情况下,除以整数将使用"true division"。 (纯)。