高手,请问
为什么这个四舍五入
alert(Math.round(100*69451.385)/100);
alert(Math.round(100*(277805.54*0.25))/100);
得到的值都是69451.38而不是预想的69451.39
这个问题很畸形啊,请帮我一下
为什么这个四舍五入
alert(Math.round(100*69451.385)/100);
alert(Math.round(100*(277805.54*0.25))/100);
得到的值都是69451.38而不是预想的69451.39
这个问题很畸形啊,请帮我一下
解决方案 »
- 如何上DIV到浏览器上边界的时候变成固定定位。
- 紧急求救,javascript动态添加表格问题!
- cname1 和 cemail1 总是是undifend,不知道为什么?
- js获取下拉框的值在FF下不正常?
- 请教滚动条事件
- 请教在JS中怎么获取和设置iframe的src属性?
- 怎样将数字100,1不变,只是加后面的数,比如199,再加1就变成1100
- 大家看看这个问题够不够难
- 【急用,在线等】怎么捕捉窗口要关闭的事件?
- 用窗口触发事件获得每次窗口改变的宽高,使得我页面上的东西不出现滚动条,但这样会有奇怪的闪烁现象,总有滚动条大小的空白条
- URL参数传递的问题--如何去掉多余的代码?
- 十万火急!!我想知道这段代码为什么放入HTML种无法显示访问来源!?在线等!!
alert(100*69451.385)
等于
6945138.49999
未到5未到5的原因是js是计算是使用二进制的
在10进制中有限小数经过二进制的计算中可能会变成无限小数
所以得到.49999了
奇怪的事有很多,比如:alert(7*0.8)
var y = 100*(277805.54*0.25)/100;
alert(x.toFixed(2));
alert(y.toFixed(2));
也就是说0至4是舍去的,6至9是要入的.
5比较特殊.在国际标准中,5是奇进偶舍---
也就是说Math.round(69451.385)5的前一位是8,8是偶数.所以得到69451.38
如果说是Math.round(69451.315)5的前一位是1,1是奇数,所以得到69451.32
如果说是alert(Math.round(100*69451.315)/100)5的前一位是1,1是奇数,所以得到69451.32
document.write(Math.round(100*69451.345)/100);结果是69451.35 5前面是4,为什么又进上去了
也可能这是js的一个bug
100*69451.365=6945136.5
Math.round(6945136.5) = 69451.37
alert(100*65535.385); ---> 6553538.5
alert(100*65536.385); ---> 6553538.4999999999
JS是采用unicode对字符处理的,所以当操作数不在 -65535到65535范围运算就会出错。 alert(Math.round(100*65535.385)/100); ---> 65535.39
alert(Math.round(100*65535.375)/100); ---> 65535.38