【发布时间】:2011-06-03 06:12:52
【问题描述】:
Javascript 数学三角函数返回错误的结果。 试试
alert(Math.sin(Math.PI));
它不返回 0。
也许问题在于 javascript 十进制数的精度。是否有任何解决方法可以获得正确的结果?
【问题讨论】:
-
您是否可以接受四舍五入的结果?
1.2246467991473532e-16非常小,四舍五入会将其转换为0。好吧,JS 的Math不是为高精度数学开发的:-( -
Floating point numbers and JavaScript modulus operator 的可能副本,可能还有数百个副本。
-
有限精度的问题...(尽管
1-Math.pow(Math.cos(Math.PI),2) == 0) -
也许你应该阅读“每个计算机科学家应该知道的关于浮点运算的知识”:download.oracle.com/docs/cd/E19957-01/806-3568/…
-
刚刚注意到这一点。简直是疯了。你会认为他们可以优化
sin来给出正确的答案。
标签: javascript math