JavaScript中的三角函数不起作用?
我不明白,为什么我从JavaScript中的三角函数中得到一些非常奇怪的值。例如:JavaScript中的三角函数不起作用?
Math.sin(Math.PI); // returns 1.2246467991473532e-16, but should return 0 Math.cos(Math.PI/2); // returns 6.123233995736766e-17, but should return 0
Math.sin(3.14); // returns 0.0015926529164868282, whitch is ok but
Math.sin(3.141592); // returns 6.535897930762419e-7!
我在Mozilla和Chrome中试过这个,得到了同样的结果。看来三角函数的参数太精确了。
请帮忙!
回答:
你可以使用Number.EPSILON
的
Number.EPSILON
属性表示1和最小的浮点数大于1
之间的差别,并采取价值的绝对增量,并希望和价值检查它是否小于Number.EPSILON
。如果true
,那么该值的误差小于浮点运算的可能错误。
console.log([ [Math.sin(Math.PI), 0],
[Math.cos(Math.PI/2), 0],
[Math.sin(3.14), 0.0015926529164868282],
[Math.sin(3.141592), 6.535897930762419e-7]
].map(([a, b]) => Math.abs(a - b) < Number.EPSILON));
一些更读取关于与浮点值的有限数字表示该问题:
Does “epsilon” really guarantees anything in floating-point computations?
Is floating point math broken?
以上是 JavaScript中的三角函数不起作用? 的全部内容, 来源链接: utcz.com/qa/264315.html