Math.cos不准确

Jan*_*roň 4 javascript math floating-point

alert(Math.cos(Math.PI/2));

为什么结果不准确为零?这是不准确,还是某些实现错误?

Sve*_*ach 11

Math.PI/2是实际值的近似值pi/2.取这个近似值的精确余弦不会产生零.您获得的值是此精确值的近似值,直到基础浮点数据类型的精度.

使用一些任意精度库,您可以评估pi/2双精度和精确值之间的差异

 0.0000000000000000612323399573676588613032966137500529104874722961...
Run Code Online (Sandbox Code Playgroud)

由于余弦的斜率接近零,你可以预期近似值的余弦pi/2近似等于这个差值,实际上也是如此.