`
zhangyaochun
  • 浏览: 2613737 次
  • 性别: 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

    然后,我们调用`toFixed(2)`,这将`num`四舍五入到最接近的两位小数,即2.45。由于`toFixed()`返回的是一个字符串,所以当我们使用`typeof num`检查其类型时,会得到"string"的结果。这意味着如果你想进行数学运算,...

    JavaScript toFixed() 方法

    值得注意的是,`toFixed()` 返回的字符串虽然看起来精确,但在进行数学计算时可能会引入额外的精度误差,因为它会进行字符串拼接而非真正的数学运算。如果需要进行数学运算并保持精确度,应当使用 `Math.pow(10, num...

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

    本文将深入探讨`toFixed()`方法以及在微信小程序中使用它的注意事项。 `toFixed()`方法用于将一个数字格式化为带有指定小数位数的字符串。其基本语法为: ```javascript number.toFixed(digits) ``` 在这里,`...

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

    在JavaScript中,Number对象提供了许多方法来处理数值,其中之一便是`toFixed()`方法。这个方法的主要作用是将一个数字四舍五入到指定的小数位数,并返回一个字符串形式的数值,而不使用科学记数法。这在需要精确...

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

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

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

    这样,`numFixed`过滤器会在`value`被渲染到DOM之前应用,确保了数据的正确格式。 如果你需要在多个组件中使用这个过滤器,可以将其定义为全局过滤器: ```javascript Vue.filter('numFixed', function (value) { ...

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

    例如,如果你尝试`(0.555).toFixed(2)`,你可能期望得到`0.56`,但实际结果可能是`0.55`。这是因为JavaScript在处理浮点数时,由于IEEE754浮点数表示的局限性,可能会出现精度损失。这与`toFixed()`方法本身的舍入...

    Javascript中 toFixed四舍六入方法

    需要注意的是,`toFixed()` 方法返回的是一个字符串,而不是一个数字。这意味着如果你试图对结果进行数学运算,需要先将其转换回数字类型(如使用 `parseFloat()` 或 `Number()` 函数)。 文章中给出了一个自定义...

    js保留两位小数使用toFixed实现

    值得注意的是,`toFixed()`返回的是一个字符串,这意味着如果你需要继续进行数学运算,你需要先将其转换回数字类型(例如使用`parseFloat()`或`Number()`函数)。此外,`toFixed()`始终会填充零到指定的小数位数,...

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

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

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

    toFixed()方法是Number对象提供的一个内置方法,它用于将数字四舍五入到指定的小数位数,并以字符串形式返回结果。然而,在早期的Internet Explorer (IE) 浏览器和Firefox (FF) 浏览器中,toFixed() 方法存在一个不...

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

    总的来说,JavaScript中的浮点数计算需要注意精度问题,`toFixed()` 虽然提供了格式化功能,但在特定情况下可能会产生不一致的结果。通过理解其背后的银行家舍入法以及可能的误差源,我们可以编写自定义的解决方案来...

    JS处理数据四舍五入(tofixed与round的区别详解)

    在使用这些方法时,需要注意的一点是,toFixed()方法返回的是字符串类型,即使它看起来像是数字。这是因为toFixed()方法返回的结果需要精确到小数点后指定的位数,而数字类型无法保证这一点,因为数字在JavaScript中...

Global site tag (gtag.js) - Google Analytics