新足迹

 找回密码
 注册

精华好帖回顾

· 说说游泳池维护 (2009-11-28) Perth · 参加活动:凤凰涅槃---文化冲击带来的成长 (2015-3-19) daisystar88
· 看图学习DIY修理淋浴漏水,更换开关 (2010-3-22) 5years · ~雪月饼~ (2007-9-21) 紫雪花
Advertisement
Advertisement
查看: 1390|回复: 13

javascript保留2位小数 [复制链接]

特殊贡献奖章

发表于 2011-5-16 13:02 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
要计算显示价钱,所以要保留两位小数
竟然找不到一个function可以做这个

在网上找了个solution,还要用string来做
  1. function roundNumber(num, dec) {
  2.         var result = String(Math.round(num*Math.pow(10,dec))/Math.pow(10,dec));
  3.         if(result.indexOf('.')<0) {result+= '.';}
  4.         while(result.length- result.indexOf('.')<=dec) {result+= '0';}
  5.         return result;
  6. }
复制代码
各位大大有没有更好的方法?
Advertisement
Advertisement

发表于 2011-5-16 13:06 |显示全部楼层
此文章由 rogerk 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 rogerk 所有!转贴必须注明作者、出处和本声明,并保持内容完整
保留两位小数, 乘以100然后取整,然后再除以100。

javascript怎么搞你自己捉摸。。

发表于 2011-5-16 13:06 |显示全部楼层
此文章由 yuba 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 yuba 所有!转贴必须注明作者、出处和本声明,并保持内容完整

特殊贡献奖章

发表于 2011-5-16 13:07 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
代码里第一行就是这个,不能显示10.10,只能显示10.1

原帖由 rogerk 于 2011-5-16 12:06 发表
保留两位小数, 乘以100然后取整,然后再除以100。

javascript怎么搞你自己捉摸。。

特殊贡献奖章

发表于 2011-5-16 13:21 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这个四舍五入有点问题。0.855得出0.85不是0.86
原帖由 yuba 于 2011-5-16 12:06 发表
http://www.w3schools.com/jsref/jsref_tofixed.asp

发表于 2011-5-16 13:28 |显示全部楼层

回复 kr2000 5# 帖子

此文章由 yuba 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 yuba 所有!转贴必须注明作者、出处和本声明,并保持内容完整
没问题啊

试试4.855

^_^
Advertisement
Advertisement

发表于 2011-5-16 13:31 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
try number.tofixed(2)

特殊贡献奖章

发表于 2011-5-16 13:37 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
4.855可以,4.755又不行,晕阿
这js怎么搞的

原帖由 yuba 于 2011-5-16 12:28 发表
没问题啊

试试4.855

^_^

发表于 2011-5-16 13:39 |显示全部楼层
此文章由 yuba 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 yuba 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-5-16 12:37 发表
这js怎么搞的


大牛2周内搞出来的东西,不要太求全责备了

特殊贡献奖章

发表于 2011-5-16 13:51 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
找到了牛人的解释

It's due to the way floating point numbers are represented as binary numbers by computers. The numbers 0.595 and 2.595 cannot be represented exactly in binary, so they are represented as a number either slightly higher or slightly lower than that number.

发表于 2011-5-16 14:07 |显示全部楼层
此文章由 fyang1024 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fyang1024 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-5-16 12:02 发表
要计算显示价钱,所以要保留两位小数
竟然找不到一个function可以做这个

在网上找了个solution,还要用string来做function roundNumber(num, dec) {
        var result = String(Math.round(num*Math.pow(10,dec))/Math.pow(10,dec));
        if(result.indexOf('.')


写的不错阿
Advertisement
Advertisement

发表于 2011-5-16 14:08 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
It may dependent on which browser you are using
For me it's all good, IE8
4.855  ===>toFixed(2)=4.86
4.755  ===>toFixed(2)=4.76

----------

It's not a big issue, who cares that one cent.

[ 本帖最后由 典 于 2011-5-16 13:10 编辑 ]

发表于 2011-5-16 15:40 |显示全部楼层
此文章由 fyang1024 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fyang1024 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 于 2011-5-16 13:08 发表
It may dependent on which browser you are using
For me it's all good, IE8
4.855  ===>toFixed(2)=4.86
4.755  ===>toFixed(2)=4.76

----------

It's not a big issue, who cares that one cent.


金融机构会抠的,不过金融机构应该不会让计算放在客户端

特殊贡献奖章

发表于 2011-5-16 17:39 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果toFixed有可能有问题,而1楼的那个solution没问题的话,我还是用1楼的那个吧,以防万一

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部