Python中的精准三角函数
直接进入主题,我想创建一个函数,用来计算一步的长度。
这是我现在的代码:
def humanstep(angle):
global human
human[1]+=math.sin(math.radians(angle))*0.06
human[2]+=math.cos(math.radians(angle))*0.06
所以如果角度是90度,那么x的值(human[1])应该等于0.06,而y的值应该等于0。
但实际上,弧度和度数之间的转换并不是很完美,所以返回了这些值。
[5.99999999999999, 3.6739403974420643e-16]
有没有办法解决这个问题呢?
7 个回答
1
1
你想要多准确呢?上面提到的准确度是15个小数位。
5
这是因为浮点数运算的特性导致的表示错误。你可以查看Python文档中的这篇文章:浮点数运算:问题与局限性。
简单来说:
要知道,这就是二进制浮点数的本质:这不是Python的错误,也不是你代码的错误。在所有支持你硬件浮点运算的编程语言中,你都会看到类似的情况(虽然有些语言可能默认不显示这个差异,或者在某些输出模式下不显示)。
如果你想深入了解,可以看看以下页面: