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
?
答案 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"。 (纯)。