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



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM