为什么python为一个带有值的函数返回0.0

2024-06-16 20:32:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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,而实际上函数有一个值?在


Tags: 函数basereturnabondefsffloat
2条回答

你的功能主要是评估:

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

或者

^{pr2}$

我假设您使用的是python2.x,它将在这里进行integer除法(截断结果以得到一个整数。在本例中,截断的结果是0,然后使用它构造一个浮点(0.0)。这里一个简单的解决方案是在分子或反单数上调用float来强制执行真除法:

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

其他解决方案正在实现true_division:

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

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

你必须在除法之前,而不是之后,强制转换成浮点型。在

执行除法,得到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

相关问题 更多 >