锁定老帖子 主题:你还在用toFixed来进行四舍五入么?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-02
比如 var money=0.00542;//0.006; alert(Number(money).toFixed(2)); //0.00 可以看出上面的结果是错误的,下面的方法通过巧妙的使用Math.round函数,完全可以解决数值很小时的精度问题。 var money=0.00542;//0.006; alert(Number(money).toFixed(2)); function round2(number,fractionDigits){ with(Math){ return round(number*pow(10,fractionDigits))/pow(10,fractionDigits); } } alert(round2(money,2));//0.01 round 方法 返回与给出的数值表达式最接近的整数。 Math.round(number) 必选项 number 参数是要舍入到最接近整数的值。 说明 如果 number 的小数部分大于等于 0.5,返回值是大于 number 的最小整数。否则,round 返回小于等于 number 的最大整数。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-01-05
原来还有这个问题。。
以前都没注意呢 |
|
返回顶楼 | |
发表时间:2009-01-05
那2.00532的值呢
你这个没有整数部份是可以的 有整数部份还要做其他处理呢 |
|
返回顶楼 | |
发表时间:2009-01-05
hanfeng450 写道 那2.00532的值呢
你这个没有整数部份是可以的 有整数部份还要做其他处理呢 怎么不可以了?你自己测试下 |
|
返回顶楼 | |
发表时间:2009-01-05
偶在FF里测试:
引用 >>> 0.00542.toFixed(2)
"0.01" 完全正确,不知ie6如何 |
|
返回顶楼 | |
发表时间:2009-01-06
LS的,我都是用ie7测试的,还是存在这个问题。。。
|
|
返回顶楼 | |
发表时间:2009-07-29
我们在使用的过程中发现还是会有一些问题,
比如55.555保留两位小数,可以变成55.56, 但是555.555,保留两位就变成555.55了 |
|
返回顶楼 | |
发表时间:2009-11-23
受教了,谢谢! 我也碰到了相同的问题,用了toFixed以后总是会出现计算错误的问题。本来是好好的数据变成0.0000 现在用了你的方法后不出现错误了,谢谢共享!
|
|
返回顶楼 | |
发表时间:2009-11-24
我在IE7试过了,没出现楼主描述的问题。
|
|
返回顶楼 | |
发表时间:2009-11-24
QMax 写道 我们在使用的过程中发现还是会有一些问题,
比如55.555保留两位小数,可以变成55.56, 但是555.555,保留两位就变成555.55了 在IE7测试,使用toFixed确实如此。 |
|
返回顶楼 | |