JavaScript toFixed()使用的注意事项

以下是w3school的定义:

定义和用法

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

语法

NumberObject.toFixed(num)
参数描述
num 必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。

返回值

返回 NumberObject 的字符串表示,不采用指数计数法,小数点后有固定的 num 位数字。如果必要,该数字会被舍入,也可以用 0 补足,以便它达到指定的长度。如果 num 大于 le+21,则该方法只调用 NumberObject.toString(),返回采用指数计数法表示的字符串。

抛出

当 num 太小或太大时抛出异常 RangeError。0 ~ 20 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。

当调用该方法的对象不是 Number 时抛出 TypeError 异常。

实例

在本例中,我们将把数字舍入为仅有一位小数的数字:

Show the number 13.37 with one decimal:
<script type="text/javascript">
var num = new Number(13.37);
document.write (num.toFixed(1))
</script>

输出:

Show the number 13.37 with one decimal:
13.4

这里的输出“13.4”其实是个Sting类型的,即"13.4",一定要注意!!!!
因为你如果是经过toFixed()方法,来进行数据处理之后,还要进行数值计算的话,那么一定要转成number类型!!!不然,一定出错,因为返回值是string字符串!!!
切记!!!!

string转换成number的方法:

JS 中将 number 转换为 string 我们比较熟悉,直接用toString() 的方法就可以了;那么将 string 转换成为 number 都有些什么方法呢?如下便简单的列举了一些,以便记录,说不定什么时候就用到了~~

我们可以使用parseInt ,或者unary plus 或者parseFloat with floor 或者Math.round这些方式,请看如下具体的代码:

1):parseInt 

        var x = parseInt("10");  // 10

 但是这种只带一个参数的方式会存在诟病。比如我们想将字符串 "010" 转化为数字 10,直接用这个方法将会返回8. 

        var x = parseInt("010"); // 8

 因此这里提供另外一个方法,带有两个参数:第一个是目标转换字符串,第二个用来指定将字符串转化为几进制的数字,并且radix的范围是(2~36) 

parseInt(string, radix)

 例如:

        var x = parseInt("1000", 10);  // 1000

 

2):unary plus (一元操作符"+"),这种方式非常的巧妙

        var x = +"1000"; // 1000

       var x = +"1000.12"; // 1000.12

 

3):parseFloat 方法可以将对应的字符串转化为浮点类型的数字

        var x = parseFloat("1000.01") // 1000.01

 

4):Math.floor 的方式可以对字符和数字进行向下取整

        var x = Math.floor("1000.01"); // 1000

       var x = Math.floor(1000.01); // 1000

       var x = Math.floor(1000.91); // 1000

 

5):Math.round 的方式可以对字符和数字进行四舍五入取整

        var x = Math.round("1000"); //1000 equivalent to round("1000",0)

        var x = Math.round("1000.56"); // 1001

        var x = Math.round("1000.23"); // 1000




另:以前的浏览器,或者09年的时候,会出现ie6左右吧,会出现如下的错误:
                var money=0.00542;//0.006;  
alert(Number(money).toFixed(2));

现在不会了,现在我ie11,firefox都是输出0.01!!!


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。