`
zhangyaochun
  • 浏览: 2575643 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

你注意到toFixed()的奇异了吗?

阅读更多

 

 今天有朋友写代码的时候遇到了一个toFixed的问题,其实这个是一个很老的问题了。

 简单记录一下,方便大家以后查看吧。

 

当然先介绍一下toFixed()这个api吧。

 

定义和用法

 

     toFixed()方法可把Number四舍五入为指定小数位数的数字

 

/*
参数num 必需,规定小数的位置 0~20之间,包括0和20
              如果省略,就是0
*/
NumberObject.toFixed(num);
 

 

 

问题还原

 

var num = 0.009;
alert(num.toFixed(2));

 

IE测试下会发现弹出的是0.00

 

 

当然有的同学到这里就觉得结束了,恩,我知道了一个原生api的bug

 

呵呵 坚持一下,下面给你解决一下这个问题

 

/*
改prototype.toFixed吧
虽然和buxiang这样做
遵循原生的返回的string
*/
Number.prototype.toFixed = function(n){
   //Math.pow(10,n)-----10的n次方
   //比如n是2,this是0.009 -----
   //this * Math.pow( 10, s ) ------      0.8999999999999999
   //parseInt(this * Math.pow( 10, s ) + 0.5) -----1
   //typeof (0.009.toFixed(2))  -----string
return (parseInt(this*Math.pow(10,n)+0.5)/Math.pow(10,n)).toString() 
}
 

 

1
0
分享到:
评论

相关推荐

    javascript 使用toFixed保留两位小数.pdf

    javascript 使用toFixed保留两位小数

    JavaScript toFixed() 方法

    定义和用法 toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。 语法 NumberObject.toFixed(num)num 必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了...

    Vue toFixed保留两位小数的3种方式

    val.toFixed(2) 第二种: 在ElementUi表格中使用 第三种: 在取值符号中使用 {{}} 定义一个方法 towNumber(val) { return val.toFixed(2) } 使用 {{ towNumber(row.equiValue) }} 补充知识:vue中提示...

    JavaScript中Number对象的toFixed() 方法详解

    下面小编就为大家带来一篇JavaScript中Number对象的toFixed() 方法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    微信小程序 保留小数(toFixed)详细介绍

    主要介绍了 微信小程序 保留小数(toFixed)详细介绍的相关资料,这里附有实例,帮助大家学习参考此部分知识,需要的朋友可以参考下

    js toFixed()方法的重写实现精度的统一

    但凡用过js 中的toFix() 方法的, 应该都... 代码如下: Number.prototype.toFixed = function(s) { return (parseInt(this * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString(); } 但是这样做仍然有一个问题,

    Javascript中 toFixed四舍六入方法

    javascript中toFixed使用的是银行家舍入规则。 银行家舍入:所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法。 简单来说就是:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应...

    JS中toFixed()方法引起的问题如何解决

    最近发现JS当中toFixed()方法存在一些问题,采用原生的Number对象的原型对象上的toFixed()方法时,规则并不是所谓的“四舍五入”或者是四舍六入五成双

    javascript中toFixed()四舍五入使用方法详解

    最近做的项目涉及到金额的计算,有一种方式就是进行四舍五入的规则进行小数点后面的尾数处理,以前一直以为toFixed方法就是四舍五入的,知道一个用户反馈了金额计算的bug我才如梦初醒(亏了一毛钱),才仔细深究了下...

    javascript之对系统的toFixed()方法的修正

    0.009.toFixed(2)本该返回0.01的结果,可它却返回了一个0.00,这是这个方法的一个BUG,且这个方法对客户端的JS版本要求有点偏高,至少在IE5.0里这个方法用不起来,所以我写了上面的一段修正代码,并且还解决了这个...

    JS使用tofixed与round处理数据四舍五入的区别

    js中一般使用tofixed与round处理数据四舍五入,那么tofixed与round有什么区别呢?下面小编给大家分享JS使用tofixed与round处理数据四舍五入的区别,需要的朋友参考下吧

    vue 保留两位小数 不能直接用toFixed(2) 的解决

    主要介绍了vue 保留两位小数 不能直接用toFixed(2) 的解决操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    javascript中的toFixed固定小数位数 简单实例分享

    [code][removed] var a=4.2343;...a.toFixed(3)); [removed] [removed]var a=4.2343;alert(a.toFixed(3));[removed]执行结果: toFixed方法将一个数字转换成一个拥有固定小数位数的字符串。

    Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法

    在公司项目中涉及到一个有大量浮点数价格计算的模块,从而引发了我一系列的思考: 计算机二进制环境下浮点数的计算精度缺失问题; console.log(.1+.2); 0.30000000000000004 为了解决上述问题,使用了toFixed方法却...

Global site tag (gtag.js) - Google Analytics