Python中的精准三角函数

1 投票
7 回答
2308 浏览
提问于 2025-04-16 08:28

直接进入主题,我想创建一个函数,用来计算一步的长度。

这是我现在的代码:

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

如果你想要准确的结果,那你做得对。

如果你想要数学上精确的结果,比如[6, 0],那就要使用一个符号数学库,比如sympy

注意,这两者的目标是非常不同的。

1

你想要多准确呢?上面提到的准确度是15个小数位。

5

这是因为浮点数运算的特性导致的表示错误。你可以查看Python文档中的这篇文章:浮点数运算:问题与局限性

简单来说:

要知道,这就是二进制浮点数的本质:这不是Python的错误,也不是你代码的错误。在所有支持你硬件浮点运算的编程语言中,你都会看到类似的情况(虽然有些语言可能默认不显示这个差异,或者在某些输出模式下不显示)。

如果你想深入了解,可以看看以下页面:

撰写回答