`
zhangyaochun
  • 浏览: 2596078 次
  • 性别: 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()`始终会填充零到指定的小数位数,...

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

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

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

    因此,如果你的项目涉及到金钱计算,使用`toFixed()`可能会引入错误,特别是在跨浏览器环境中。 为了避免这些问题,你可以自定义一个四舍五入函数,以确保在所有环境下得到一致的结果。例如,你提供的`moneySwitch...

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

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

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

    在讨论JavaScript中的toFixed方法时,我们经常会遇到一种情况,即在浮点数运算中由于二进制精度缺失导致计算结果出现不精确的问题。toFixed方法是JavaScript提供的一个字符串方法,用于将数字格式化为保留指定位数的...

Global site tag (gtag.js) - Google Analytics