这是怎么回事?Python cos(90)和cos(270)不是0
测试出sin和cos函数,找出为什么当我将坐标输出到SVG文件时,为什么我会在错误的位置获得如此精美的定位。所以我制作了这个测试代码,我可以预测答案是找出原因。奇怪的是,没有任何影响计算的东西会自我增加这种行为,而只是我即将停留的位置。如果位置为0并且在计算后变为0,则它将不起作用,但是如果位置为1并且在计算后它将变为1,则它将起作用。
第一个测试:
import math
cX = 2
cY = 2
r = 2
rcX = cX + (r * math.cos(math.radians(0)))
rcY = cY + (r * math.sin(math.radians(0)))
print rcX #4
print rcY #2
r = 1
rlX = rcX + (r * math.cos(math.radians(90)))
rlY = rcY + (r * math.sin(math.radians(90)))
print rlX #4
print rlY #3
r = 4
flX = rlX + (r * math.cos(math.radians(180)))
flY = rlY + (r * math.sin(math.radians(180)))
print flX #0
print flY #3
r = 2
print r * math.cos(math.radians(270))
print flX + (r * math.cos(math.radians(270))) #-3.67394039744e-16 should be 0
print flY + (r * math.sin(math.radians(270))) #1
现在我改变CX至3,即使它不会影响计算这是它的工作原理:
r * math.cos(math.radians(270))
该计算的结果加到x协调
import math
cX = 3
cY = 2
r = 2
rcX = cX + (r * math.cos(math.radians(0)))
rcY = cY + (r * math.sin(math.radians(0)))
print rcX #5
print rcY #2
r = 1
rlX = rcX + (r * math.cos(math.radians(90)))
rlY = rcY + (r * math.sin(math.radians(90)))
print rlX #5
print rlY #3
r = 4
flX = rlX + (r * math.cos(math.radians(180)))
flY = rlY + (r * math.sin(math.radians(180)))
print flX #1
print flY #3
r = 2
print r * math.cos(math.radians(270))
print flX + (r * math.cos(math.radians(270))) #1
print flY + (r * math.sin(math.radians(270))) #1
'-3.67394039744e-16'已经够接近了吗? – Mysticial
你得到了什么输出? – Wug
您知道转换为弧度会遇到舍入错误,对吗? –