Javascript Math trigonomerial methos返回错误的结果。 试试
alert(Math.sin(Math.PI));
它不会返回0.
也许问题是javascript十进制数精度。是否有任何工作量可以得到正确的结果?
答案 0 :(得分:13)
alert(Math.sin(Math.PI/2))
确实返回1
。
这只是处理浮点运算时必须注意的事情之一。整个地方都会出现舍入错误。
答案 1 :(得分:0)
您可以使用
Math.sin(Math.PI).toFixed(3) // "0.000"
const cos = (a) => Math.cos(Math.PI * a / 180);
cos(90) // 6.123233995736766e-17
然后您可以使用.toFixed()
cos(90).toFixed(3) // "0.000"
.toFixed()
返回字符串,因此您可以使用parseFloat()
parseFloat(cos(90).toFixed(3)) // 0.000
答案 2 :(得分:-3)
好吧,我想那是因为Math.PI
不准确,3.14
而不是3.1415926
。尝试
alert(Math.sin(3.1415926));
如果仍然不够,你可以尝试在泰勒系列中使用扩展
sin x = x - x^3 / 3! + x^5 / 5! - x^7 / 7! ......