保留小數位toFixed()方法的怪異表現


1 、tofixed方法

toFixed() 方法可把 Number 四舍五入為指定小數位數的數字。例如將數據Num保留2位小數,則表示為:toFixed(Num);但是其四舍五入的規則與數學中的規則不同,使用的是銀行家舍入規則,銀行家舍入:所謂銀行家舍入法,其實質是一種四舍六入五取偶(又稱四舍六入五留雙)法。具體規則如下:

簡單來說就是:四舍六入五考慮,五后非零就進一,五后為零看奇偶,五前為偶應舍去,五前為奇要進一。通過谷歌測試:前兩句是對的,四舍六入五考慮,五后非零就進一,五后為零的情況和前面的數字有關,但不僅僅是奇偶的關系;而且五后為零后面還有非零也進一,總之在計算的時候可能這就不是我們想要的了,不符合數學規律;

先走一波測試(谷歌):

12.050.toFixed(1)
"12.1"
12.150.toFixed(1)
"12.2"
12.250.toFixed(1)
"12.3"
12.350.toFixed(1)////////
"12.3"
12.450.toFixed(1)////////
"12.4"
12.550.toFixed(1)
"12.6"
12.650.toFixed(1)
"12.7"
12.750.toFixed(1)
"12.8"
12.850.toFixed(1)/////////
"12.8"
12.950.toFixed(1)/////////
"12.9"

12.9501.toFixed(1)
"13.0"

2 、Math.round()方法

例如:對於X進行保留兩位小數的處理,則可以使用Math.round(X * 100) / 100.進行處理

function mathfloat(num, n) {
    n = n ? parseInt(n) : 0;
    if(n <= 0) {
        return Math.round(num);
    }
    num = Math.round(num * Math.pow(10, n)) / Math.pow(10, n); //四舍五入
    num = Number(num).toFixed(n); //補足位數
    return num;
};

 


免責聲明!

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



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