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

时间:2015-11-15 17:02:21

标签: python python-3.x

# 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#并使用相同的数据运行时,它输出answer -0.3539。在我看来,就像投射/舍入错误,但我没有调试器就难以找到它。

我是python的新手,我在Windows上使用基本的IdleX来编写代码。

1 个答案:

答案 0 :(得分:4)

问题不在于你的功能,而在于打印。

格式化程序%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