在python中输出错误,c版本工作正常

2024-10-01 02:40:29 发布

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

# your code goes here

def lagrange(x0, xlist,ylist):
    wynik =float(0)
    if (len(xlist)!=len(ylist)):
        raise BufferError("Rozmiary list wartosci x i y musza byc takie same!")
    for i in range(len(xlist)):
        licznik=float(1)
        mianownik = float(1)
        for j in range(len(xlist)):
            if (i!=j):
                licznik=licznik*(x0-xlist[j])
                mianownik=mianownik*(xlist[i]-xlist[j])
        wynik=wynik+((licznik/mianownik)*ylist[i])
    return wynik


x=[2.0,4.0,5.0,6.0 ]
y=[0.57672, -0.06604, -0.32757, -0.27668]
print ("Lagrange polynomial for point 5.5 is %d" % lagrange(5.5, x, y))

为什么我运行它之后会得到答案0?当重写到c#并使用相同的数据运行时,它会输出答案-0.3539。在我看来,像铸造/舍入错误,但我很难找到它没有调试器。你知道吗

我对python完全陌生,我在windows上使用基本的IdleX来编写代码。你知道吗


Tags: 答案inforyourlenifrangefloat
1条回答
网友
1楼 · 发布于 2024-10-01 02:40:29

问题不在于你的功能,而在于印刷。你知道吗

格式化程序%d是一个有符号整数十进制。因此,如果结果是-0.354,它将四舍五入到0。你知道吗

相反,使用%f打印:

>>> print ("Lagrange polynomial for point 5.5 is %f" % lagrange(5.5, x, y))
Lagrange polynomial for point 5.5 is -0.353952

相关问题 更多 >