我试图用数学模块创建极坐标数组;但 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的答案给我解决方案。 如果您认为其他线程在这些线程中显示的答案是重复的。
答案 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
。小数点后五位数应该适用于您需要该模块的几乎任何内容。