zoukankan      html  css  js  c++  java
  • 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!!!


  • 相关阅读:
    linux查看CPU和内存信息
    linux yum命令详解
    查看文件中关键字前后几行的内容
    vue.js+web storm安装及第一个vue.js
    android GPS: code should explicitly check to see if permission is available
    ASP.NET MVC Identity 使用自己的SQL Server数据库
    阿里云服务器,tomcat启动,一直卡在At least one JAR was scanned for TLDs yet contained no TLDs就不动了
    ASP.NET MVC4 MVC 当前上下文中不存在名称“Scripts”
    python 将windows字体中的汉字生成图片的方法
    Java android DES+Base64加密解密
  • 原文地址:https://www.cnblogs.com/gmq-sh/p/4287635.html
Copyright © 2011-2022 走看看