我使用Meteor。它在服务器和客户端都使用Javascript。
当我运行Math.sin(356644061314425) * 10000
时,我得到:
-9986.46139381927
和
-9986.46115497749
这是为什么?我怎么能阻止这个?
编辑:建议的重复问题是指度/弧度。我认为我的更多是运行时问题。
答案 0 :(得分:6)
我认为答案是"我如何防止这种情况?"是"你不能"。
答案"为什么会这样?"是没有确定Math.sin的javascript实现。
请参阅http://www.ecma-international.org/ecma-262/5.1/#sec-15.8.2.16
具体而言#34; sin(x)将依赖于实现的近似值返回到x的正弦值。这个论点以弧度表示。" (我的斜体)。
但我的实验表明,现代浏览器目前只使用两种实现中的一种,Chrome与其他浏览器不同(并且看起来比其他浏览器更准确)。