js四捨五入和計算

2021-10-23 12:42:00 字數 2753 閱讀 6908

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時,不會按常理...