Sin pi:给出错误的结果

时间:2017-10-16 02:15:19

标签: python-2.7 python-3.x math pi

我试图用数学模块创建极坐标数组;但 math.sin(math.pi)总是给出错误的结果。 与python 2.7或3.5相同的错误结果:

import math
m = math.radians(180)
print (math.sin(m))
pi = math.pi
print (pi)
print (math.sin(pi))
1.2246467991473532e-16
3.141592653589793
1.2246467991473532e-16

这是我的代码和同样的错误:

import math

a = 180 #(degree)

r = 10
n = 8
b = float(a)/n

pi = math.radians(180)
print math.sin(pi)

for i in range(0,2*n+1):
   print i
   c1 = b*i
   print c1
   c2 = c1*math.pi/a #c : radians
   print c2
   sinb = math.sin(c2)
   cosb = math.cos(c2)
   x = r*sinb
   y = r*cosb
   #print (x, y)

评论中提到的线程解释不是解决方案;所以我不需要解释如何以及为什么没有解决方案解决我的问题和cody的答案给我解决方案。 如果您认为其他线程在这些线程中显示的答案是重复的。

1 个答案:

答案 0 :(得分:1)

由于pi是一个无理数,并且永远存在,因此Python版本实际上并不是精确的pi。结果,almost-pi的罪是almost-0。基本上你可以将它归结为Python舍入错误。

以下是关于该主题的更多信息:

Floating Point Arithmetic: Issues and Limitations

why am I getting an error using math.sin(math.pi) in python?

我建议你把一些四舍五入到最近的N个单位,这些单位就足够了你的模块。你得到的数值是0.000000000000000122。小数点后五位数应该适用于您需要该模块的几乎任何内容。