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!!!


  • 相关阅读:
    ZJOI 2014 星系调查(推导)
    APIO 2014 回文串(Manacher+后缀自动机+倍增)
    HDU 3948 The Number of Palindromes(Manacher+后缀数组)
    BalkanOI 2018 Parentrises(贪心+DP)
    POJ 3693 Maximum repetition substring(后缀数组+ST表)
    HDU 5769 Substring(后缀数组)
    POJ 1743 Musical Theme(后缀数组+二分答案)
    POJ 3261 Milk Patterns(后缀数组+二分答案)
    THUSCH 2017 大魔法师(矩阵乘法+线段树)
    BZOJ 2759 一个动态树好题(动态树)
  • 原文地址:https://www.cnblogs.com/gmq-sh/p/4287635.html
Copyright © 2011-2022 走看看