我试着做一段代码,在360度范围内找到每个角度的x和y坐标,当给定半径时,我觉得所有的数学都是正确的,它的执行是正确的,但是当我把它们和我放在计算器中的值进行比较时,它返回了错误的值
import math
print (math.pi)
r = 5
angle = 0
count = 0
while angle <= 360:
angle_radians = math.radians(angle)
x_coord = math.cos(angle_radians)*r
y_coord = math.sin(angle_radians)*r
print ("Position [",x_coord,",",y_coord,"]")
angle +=1
count +=1
print(count)
它给出了正确的答案。看看你举的例子;看起来错误的坐标是y坐标,在180度转弯时应为0:
那
e-16
是“乘以10的-16次方”的科学记数法。所以,这个数字等于.00000000000000006123233...
为什么不完全返回0?因为Python处理浮动的特性
如果不需要那么高的精度,可以通过重写函数以使用
round
来获得更可读的结果,如下所示:你的计算器可能有板上的三角函数,或四舍五入到一定数量的数字。正如Ben Quigley已经详细说明的那样,您给定的值非常小。恰好是
math.sin(math.pi))
返回的相同值math
包通过对快速收敛的级数求和来实现非常精确的近似。由于计算机只存储一定数量的精度位,因此它们不能精确地表示每个实数,在这种情况下,它们只需舍入或截断到支持的位数(可能是64位)根据您的需要,您可以接受几乎完全正确的答案,四舍五入到所需的位数,或者对角度进行特殊检查,在这些角度上,您希望得到比1万亿分之一精度更高的结果
相关问题 更多 >
编程相关推荐