Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Math.cos和Math.sin不准确。有什么解决办法吗?_Javascript_Math - Fatal编程技术网

Javascript Math.cos和Math.sin不准确。有什么解决办法吗?

Javascript Math.cos和Math.sin不准确。有什么解决办法吗?,javascript,math,Javascript,Math,Javascript数学三角法返回错误的结果。 试一试 它不返回0 可能问题在于javascript十进制数字精度。是否有任何一轮训练来获得正确的结果?但这非常非常接近于零。(~10^-16) 并且alert(Math.sin(Math.PI/2))会返回1 这只是处理浮点运算时必须小心的事情之一。舍入错误到处都会出现。您可以使用 Math.sin(Math.PI).toFixed(3)/“0.000” 示例: constcos=(a)=>Math.cos(Math.PI*a/180); cos

Javascript数学三角法返回错误的结果。 试一试

它不返回0


可能问题在于javascript十进制数字精度。是否有任何一轮训练来获得正确的结果?

但这非常非常接近于零。(~10^-16)

并且
alert(Math.sin(Math.PI/2))
会返回
1

这只是处理浮点运算时必须小心的事情之一。舍入错误到处都会出现。

您可以使用

Math.sin(Math.PI).toFixed(3)/“0.000”

示例:
constcos=(a)=>Math.cos(Math.PI*a/180);
cos(90)//6.123233995736766e-17

然后可以使用
.toFixed()

cos(90).toFixed(3)/“0.000”

.toFixed()
返回字符串,因此可以使用
parseFloat()将其解析为float()


parseFloat(cos(90).toFixed(3))//0.000<代码>1.2246467991473532e-16相当小,四舍五入将转换为
0
。好吧,JS的
Math
不是为高精度数学而开发的:-(可能是重复的,也可能是几百个。有限精度的悲哀…(即使
1-Math.pow(Math.cos(Math.PI),2)==0
)也许你应该读一读“每个计算机科学家都应该知道的浮点算法”当前位置刚刚注意到这一点。简直是胡说八道。你可能会认为他们可以通过优化
sin
来给出正确的答案。
alert(Math.sin(Math.PI));