首頁  >  文章  >  js四捨五入

js四捨五入

百草
百草原創
2023-07-04 10:07:0318810瀏覽

js四捨五入的方法:1、tofixed方法,可把 Number 四捨五入為指定小數位數的數字;2、round() 方法,可把一個數字舍入為最接近的整數。

js四捨五入

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:怎麼建立網站下一篇:怎麼建立網站