首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >度数的cos与等效弧度的cos不匹配

度数的cos与等效弧度的cos不匹配
EN

Stack Overflow用户
提问于 2010-09-19 20:57:32
回答 5查看 7.6K关注 0票数 6

JavaScript中的所有数学函数都使用弧度代替度数。然而,他们要么是不平等的,要么是我大错特错了。

从度到弧度的转换为:

代码语言:javascript
复制
var rad = angle * Math.PI / 180

90度角equals 1.57079633弧度

90度角equals 0的余弦。

1.57079633弧度equals -3.20510345×10-9的余弦。

请注意,在Javascript中,所有操作都在一个步骤中完成,以避免舍入误差:

代码语言:javascript
复制
var cos = Math.cos(angle * Math.PI / 180);

我显然在这里遗漏了一些明显的东西,但是它搞砸了代码。

EN

回答 5

Stack Overflow用户

发布于 2010-09-19 21:02:53

总是会有舍入误差。不管怎样,浮点数在数学上是不准确的,它只能精确到一定数量的有效数字。

修改你的代码,这样当你有1/1000000000的错误时,它就不会“搞砸”。

票数 1
EN

Stack Overflow用户

发布于 2010-09-19 21:03:02

对于我们大多数在计算机上做严肃计算的人来说,等于-3.20510345×10^-9,达到您在处理浮点数时有权期望的任何合理的精度。这是一个经常在SO上讨论的话题。

票数 1
EN

Stack Overflow用户

发布于 2010-09-19 21:10:58

是的,你只是在这里丢失了类型转换的数据。

弧度中的90度不等于1.57079633度。如果有更多的小数位,就会像预期的那样直接转换回来。

对于这样的事情,您必须始终保持谨慎。如上所述,10^-9足够接近于零。

也取自MSDN

此外,由于Double类型的精度损失,具有双精度值的算术和赋值操作的结果可能因平台而略有不同。例如,在.NET框架的32位和64位版本中,赋值文本双精度值的结果可能不同。以下示例说明了将文字值-4.42330604244772E-305和值为-4.42330604244772E-305的变量赋给双精度变量时的差异。注意,这种情况下的解析(字符串)方法的结果不会受到精度损失的影响。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3745757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档