【发布时间】:2023-03-15 15:56:01
【问题描述】:
下面一行:
console.log(ship.x + " + " + (4/3) + " * " + ship.r + " * " + Math.cos(ship.a));
返回:
50 + 1.3333333333333333 * 15 * 6.123233995736766e-17
但是,当我通过 JavaScript 实际进行数学运算时:
console.log(ship.x + 4 / 3 * ship.r * Math.cos(ship.a));
它返回'50'的整数值?这怎么可能?该行中的第一个值是 50,因此您会认为它在运行后逻辑上会是一个更大的数字。我已经尝试过 PEMDAS 和许多其他变体,但始终没有得到 50 的值。JavaScript 究竟对上述代码做了什么?这是整个代码页的链接:https://codepen.io/hoyos/pen/vYJqaRw?editors=0010
【问题讨论】:
-
浮点数学不能代表那么高的精度。将一个很小的数字添加到任何超过 15 的整数都将无效。
-
这能回答你的问题吗? Is floating point math broken?
标签: javascript math return console.log