tofixed() 方法可把 number 四捨五入為指定小數字數的數字,但其四捨五入的規則與數學中的規則不同,使用的是銀行家捨入規則,銀行家捨入:所謂銀行家捨入法,其實質是一種四捨六入五取偶(又稱四捨六入五留雙)法。具體規則如下:四捨六入五考慮,五後非零就進一,五後為零看奇偶,五前為偶應捨去,五前為奇要進一。
1.55.tofixed(1)
1.555.tofixed(2)
math.round() 函式返回乙個數字四捨五入後最接近的整數。
如果引數的小數部分大於 0.5,則捨入到相鄰的絕對值更大的整數。 如果引數的小數部分小於 0.5,則捨入到相鄰的絕對值更小的整數。如果引數的小數部分恰好等於0.5,則捨入到相鄰的在正無窮(+∞)方向上的整數。math.round()並不總是捨入到遠離0的方向(尤其是在負數的小數部分恰好等於0.5的情況下)
math.round(30.49) //30
math.round(30.5) //31
math.round(-30.49); //-30
math.round(-30.5); //-30
math.round(-30.51); //-31
返回基數(base)的指數(exponent)次冪
math.pow(4, 0.5) //2
math.pow(4, 2) //16
函式可解析乙個字串,並返回乙個浮點數
parsefloat("9") //9
parsefloat("44 12 33") //44
parsefloat("30 aaaa") //30
parsefloat("word 30") //nan
思路:數字(number)乘以10的精度(precision)次冪,再除以10的精度(precision)次冪
function round(number, precision)
round(1.555, 2);
1、原生js運算結果不一定準確,會丟失精度
console.log(0.1 + 0.2);
console.log(1.99 - 0.9);
console.log(7 * 0.7);
console.log(5.99 / 1000);
2、原因
數字轉換為二進位制的過程中丟失了精度
3、解決方案
計算前乘以10的n次方冪,計算後再除以10的n次方冪
擴大小數點位數最多的倍數,add方法中使用了修復的乘法計算
function accadd(a, b) catch (f)
try catch (f)
return e = math.pow(10, math.max(c, d)), (accmul(a, e) + accmul(b, e)) / e;
}
//給number型別增加乙個add方法
number.prototype.add = function (arg) ;
number(1.111).add(2.123); // 3.234
accsub方法中使用了修復的乘法計算
function accsub(a, b) catch (f)
try catch (f)
return e = math.pow(10, math.max(c, d)), (accmul(a, e) - accmul(b, e)) / e;
}
number.prototype.sub= function (arg)
function accmul(a, b) catch (f) {}
try catch (f) {}
return number(d.replace(".", "")) * number(e.replace(".", "")) / math.pow(10, c);
}
// 給number型別增加乙個mul方法,呼叫起來更加方便。
number.prototype.mul = function (arg) ;
number(1.234).mul(2.1); // 2.5914
function accdiv(a, b) catch (g) {}
try catch (g) {}
return c = number(a.tostring().replace(".", "")), d = number(b.tostring().replace(".", "")), accmul(c / d, math.pow(10, f - e));
}
//給number型別增加乙個div方法,呼叫起來更加方便。
number.prototype.div = function (arg) ;
number(2.2).div(1.1) //2
math.js
numeral.js
js 四捨五入
round 四捨五入為整數 本節內容 js實現四捨五入的 方法一 在js中四捨五入的函式 tofixed n n為要保留的小數字數。n為0 20,當n超過20的時候,js會出錯。var d 10.005 var f d.tofixed 2 alert f bug 如果小數點前和要擷取的前一位都是0時...
js四捨五入
寫法巨強的四捨五入的轉換函式,如下 function round v,e 在感嘆js強大的同時,也感嘆一下自己的無知!引數裡的 v表示要轉換的值 e表示要保留的位數 函式裡的兩個for,這個是重點了,第乙個for針對小數點右邊的情況,也就是保留小數點右邊多少位 第二個for針對小數點左邊的情況,也就...
JS中四捨五入
在js中四捨五入的函式 tofixed n n為要保留的小數字數。n為0 20,當n超過20的時候,js會出錯。var d 10.005 var f d.tofixed 2 alert f 或者用 new number d tofixed 2 bug 如果小數點前和要擷取的前一位都是0時,不會按常理...