2014-09-26 185 views
0
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实际上有一个函数的值?为什么python返回值为0.0的函数值为

+2

因为......它返回'浮动(0)'。 – 2014-09-26 02:50:19

+0

你如何得到它作为小数返回实际值,如何让它打印值作为我计算的值0.42857 ... – Deka 2014-09-26 02:52:58

+0

修改为这样。 '返回浮点数(X)/浮点数(Y)'。 – 2014-09-26 02:54:38

回答

3

你的功能基本评估:

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

6/14 

我假设你使用的是要在这里做整数师python2.x(截断结果最后得到一个整数,在这种情况下,截断结果为0,然后用它来构造一个浮点数(0.0)。这里一个简单的解决方法是只调用分子的float或denomonator逼真司:

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

替代解决方案,使true_division:

from __future__ import division # Needs to be imported first thing! 

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

+0

事情是我将它设置为具有输入值作为浮动但Im实际上假设使用整数输入并得到一个浮点数结果 – Deka 2014-09-26 02:54:16

+0

请注意,在Python 2中启用浮点除法(通过导入)会使读者代码的任何其他人感到困惑,所以不建议这样做。 – sapi 2014-09-26 02:56:19

+0

@Deka - 好吗?这很好 - 我告诉你如何。只需将返回值更改为我显示的内容('float((h + bb + hbp))/(ab + bb + hbp + sf)'而不是'float((h + bb + hbp)/(ab + bb + hbp + sf))'),你会没事的。 (注意括号中的区别) – mgilson 2014-09-26 02:56:53

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 
+0

事情是我必须使用整数作为我的输入值,但我必须有一个浮动作为结果,所以我怎么能够得到这样一个浮动 – Deka 2014-09-26 02:55:37

相关问题