js四捨五入的方法:1、tofixed方法,可把 Number 四捨五入為指定小數位數的數字;2、round() 方法,可把一個數字舍入為最接近的整數。
1 、tofixed方法
toFixed() 方法可將 Number 四捨五入為指定小數位數的數字。例如將資料Num保留2位小數,則表示為:toFixed(Num);但是其四捨五入的規則與數學中的規則不同,使用的是銀行家舍入規則,銀行家舍入:所謂銀行家舍入法,其實質是一種四捨六入五取偶(又稱四捨六入五留雙)法。具體規則如下:
簡單來說就是:四捨六入五考慮,五後非零就進一,五後為零看奇偶,五前為偶應捨去,五前為奇要進一。
顯然這種規則不符合我們平常在資料中處理的方式。為了解決這樣的問題,可以自訂去使用Math.round方法進行自訂式 的實作指定保留多少位元資料進行處理。
2 、round方法
round() 方法可將一個數字舍入為最接近的整數。例如:Math.round(x),則是將x取其最接近的整數。其取捨的方法使用的是四捨五入中的方法,符合數學中取捨的規則。對於小數的處理沒有那麼便捷,但是可以根據不同的要求,進行自訂的處理。
例如:對於X進行保留兩位小數的處理,則可以使用 Math.round(X * 100) / 100 進行處理。
其它內容:
在JavaScript 中,對數值進行四捨五入操作的場景有以下幾種:
向上取整:ceil向下取整:floor四捨五入: round固定精度:toFixed固定長度:toPrecision取整:parseInt、位元運算
本文將對這6 個API 進行簡單的講解和總結。
1、向上取整: ceil
ceil 是`天花板`的意思,表示在一個數值之上,且距離該數最近的整數。 ceil 是Math 物件的靜態方法,需要傳遞一個參數,其呼叫方法如下:
Math.ceil(12.34); //13Math.ceil(12.68); //13
#2、向下取整: floor
floor 是`地板`的意思,表示在一個數值之下,且距離該數最近的整數。 floor 是Math 物件的靜態方法,需要傳遞一個參數,其呼叫方法如下:
Math.floor(12.34); // 12Math.floor(12.68); // 12
#3、四捨五入: round
round 的作用是將一個浮點數四捨五入,並保留整數位。 round 也是Math 物件的靜態方法,也需要傳遞一個參數,其呼叫方法如下:
Math.round(12.34); // 12Math.round(12.54); // 13
#4、固定精度: toFixed
toFixed 和上面三個方法不同,它是Number 原型上實現的一個方法,其作用是對一個浮點數進行四捨五入並保留固定小數位。 toFixed 需要傳遞一個參數,其呼叫方式如下:
100.456001.toFixed(2); // 100.46100.456001.toFixed(3); // 100.456
#長度: toPrecision
toPrecison 也是Number 原型上實現的一個處理浮點數的方法,和toFixed 不同的是,它是對一個浮點數進行四捨五入並保留固定長度的有效數字,包括整數部分。
99.456001.toPrecision(5); // 99.456100.456001.toPrecision(5); // 100.46
6、全域物件window上的一個方法,其作用是對一個可轉換的數值取整,分為以下兩種情況:
1. 將字串數值轉換為Number 整數,對字串的每一個字元進行轉化,直到遇到不可轉化的字元(包括小數點)停止。
2. 對浮點類型數值取整,忽略小數部分,不做四捨五入處理
// 字串數值parseInt('100') ; // 100parseInt('100axt') ; // 100parseInt('100xh20'); // 100parseInt('100.78'); // 123// Number 類型parseInt(100.12) ; // 100parseInt(100.78); // 100
## 7. 取整: 位元運算
| 0 : 和0 進行位元或操作,原值不變~~ : 兩次位元非操作得到的也是原值>> 0 : 右移0 位元<< 0 : 左移0 位元>>> 0: 無符號右移0 位元
這些位元運算子在實現取整運算時,會表現出一些共同的特徵:
對於Number 類型來說,直接應用位元操作, 和parseInt 得到的結果幾乎一樣;對於其他類型,內部會先透過Number() 將其轉換為數值,然後再套用位元操作。對特殊 NaN 和 Infinity 值套用位元操作時,這兩個值都會被當成 0 來處理 。
對於 Number 類型,直接套用位元運算。
~~ 100.12; // 100100.78 | 0; // 100100.45 >> 0; // 100.45 >> gt; 0; // 100
對於其他類型,先使用 Number() 轉換為數值類型,再進行位元運算。
~~ '100.12' // 100, Number('100.12') == 100.12'100.50' >> 0; // 100,Number('100.50') 0; // 100,Number('100.50') 0; // 100,Number('100.50') 100. ;< 0; // 100,Number('100.96') == 100.96~~ 'abc' // 0 , Number('abc') == NaN'12abc' >> 0; // 0, Number ('12abc') == NaNundefined | 0 ; // 0, Number(undefined) == NaN~~null; // 0 , Number(null) == 0true >> 0; // 1 , Number(true ) == 1false >> 0; //0 , Number(false) == 0[] << 0; // 0 , Number([]) == 0~~NaN; // 0 Infinity > ;>> 0; // 0
位元運算是用於最基本的層次上,即以記憶體中表示數值的位元來操作數值。
位元運算能取整的原因是:
ECMAScript 中的數值以64位元雙精度浮點數存儲,但位元運算只能作用於整數,因此要先將64 位元的浮點數轉換成32 位元的整數,然後再進行位元運算,最後再將計算結果轉換成64位元浮點數儲存。
以上是js四捨五入的詳細內容。更多資訊請關注PHP中文網其他相關文章!