Python中的浮点精度

时间:2012-11-30 17:30:03

标签: python math floating-point precision floating-point-precision

我在python中写了this function

import math

def radical(a, b, k): 
    return (1-((a**2-b**2)/a**2)*(math.sin(math.pi*(2*k-1)/180))**2)**.5

def f(a, b): 
 sigma = 0 
 for k in range(1,180/4):
    sigma = sigma + radical(a, b, k)
 return 8*a*math.sin(math.pi/180)*sigma

print f(25.,35.)

当我在Wolphramapha和Maple中计算此函数时,我将获得189.797但是使用python I will get 184.91089913 我的课程有什么问题?

2 个答案:

答案 0 :(得分:6)

你是一个人。 range方法排除了终点。尝试添加一个:

for k in range(1,180/4 + 1):

结果:189.797208409

答案 1 :(得分:2)

嗯,首先,python假定整数除法,所以在这段代码中有一些严重的舍入。我认为这有分歧。另外,以下是有关python的浮点运算问题/问题的一些信息:

http://docs.python.org/2/tutorial/floatingpoint.html