JavaScript 浮点精度问题
JavaScript floating point precision issue
我遇到浮点精度问题,有人知道为什么会这样吗?为什么影响余弦函数,而不影响正弦函数
Math.sin(90 * Math.PI / 180);
// returned: 1, expected: 1
1 - Math.sin(90 * Math.PI / 180);
// returned: 0, expected: 0
Math.cos(90 * Math.PI / 180);
// returned: 6.123233995736766e-17, expected: 0
1 - Math.cos(90 * Math.PI / 180);
// returned: 0.9999999999999999, expected: 1
这个问题的规范答案是What Every Computer Scientist Should Know About Floating-Point Arithmetic
稍加尝试,您将找到 "unexpected" 正弦函数结果的示例。
例如Math.sin(180 * Math.PI / 180);
我遇到浮点精度问题,有人知道为什么会这样吗?为什么影响余弦函数,而不影响正弦函数
Math.sin(90 * Math.PI / 180);
// returned: 1, expected: 1
1 - Math.sin(90 * Math.PI / 180);
// returned: 0, expected: 0
Math.cos(90 * Math.PI / 180);
// returned: 6.123233995736766e-17, expected: 0
1 - Math.cos(90 * Math.PI / 180);
// returned: 0.9999999999999999, expected: 1
这个问题的规范答案是What Every Computer Scientist Should Know About Floating-Point Arithmetic
稍加尝试,您将找到 "unexpected" 正弦函数结果的示例。
例如Math.sin(180 * Math.PI / 180);