,如果我失去了一些东西很明显这里,但我不知道......火狐和Javascript四舍五入规则
在IE,Opera和Chrome中,我得到了我从一个5结尾的四舍五入数字预计:
125 toPrecision(2) => 130
11.5 toPrecision(2) => 12
这是我所期望的。
火狐,虽然是一个小更“复杂”,得到以下:
125 toPrecision(2) => 120 //wtf!!!
11.5 toPrecision(2) => 12
有点挠头之后,我得出这样的Firefox使用“四舍五入甚至”规则的结论其中,如果前5位数字是偶数数向下取整,如果前5位为奇数的轮数了起来:
0.5 => 0
1.5 => 2
2.5 => 2
3.5 => 4, etc.
我使用的是圆形的结果,以测试学生解决工程问题与伪随机生成问题输入。 Chrome中的问题输入可能是h = 1020毫米,但在FF,Chrome或Opera中h = 1030毫米。
我需要一个函数来使舍入一致,即我想0.00舍入到0.000124,我想1234舍入到1240,所以我不能使用一个简单的num = Math.floor(num + 0.5);为了使问题复杂化了一点,我想输入变量和学生的答案是正确的3个SIG挖除非第一个数字是1,在这种情况下,我想4 SIG挖:
234.5 => 235
134.5 => 134.5
我砍死一个解决方案通过将数字转换为一个字符串并测试第一个非零,非小数点和非负数字符'1' - 不是很漂亮,但它的工作原理,这取决于第一位数字是3还是4 sig。我可以为舍入问题做类似的事情,检查是否要舍入的数字是5,但我想知道是否有一个优雅的按位解决方案。
“我想要1234圆到1240”? –