1. 程式人生 > >javascript資料型別----Number

javascript資料型別----Number

1.浮點數值

浮點數值的坑大多集中在計算方面,例如 0.1 + 0.2 的結果不是 0.3 ,而是 0.30000000000000004 ,造成這樣結果的原因有興趣的可以去檢視一下“位運算”的相關內容。

因此,永遠不要測試每個特定的浮點數值,如果需要驗證可以通過保留小數點後幾位有效數字的方法進行比較。

toDecimal(x){
                let f = parseFloat(x);
                if(isNaN(f)){
                    return false;
                }
                f = Math.round(x * 100) / 100;
                return f;
 }

對於那些極大或極小的數值,可以用 e 表示法(即科學計數法)表示的浮點數值表示。在預設情況下,ECMAScript會將那些小數點後面帶有 6 個領以上的額浮點數值轉換為以 e 表示法表示的數值。

2.與數值相關的全域性方法

(1)parseInt 方法將用於把字串轉換為整數。

字串轉為整數的時候,是一個個字元依次轉換,如果遇到不能轉為數字的字元,就不再進行下去,返回已經轉好的部分。

如:

parseInt('8a') // 8
parseInt('12**') // 12
parseInt('12.34') // 12
parseInt('15e2') // 15
parseInt('15px') // 15

如果字串的第一個字元不能轉化為數字(後面跟著數字的正負號除外),返回NaN

parseInt('abc') // NaN
parseInt('.3') // NaN
parseInt('') // NaN
parseInt('+') // NaN
parseInt('+1') // 1

對於那些會自動轉為科學計數法的數字,parseInt會將科學計數法的表示方法視為字串,因此導致一些奇怪的結果。

parseInt(1000000000000000000000.5) // 1
// 等同於
parseInt('1e+21') // 1

parseInt(0.0000008) // 8
// 等同於
parseInt('8e-7') // 8

(2)進位制轉換

parseInt

方法還可以接受第二個引數(2到36之間),表示被解析的值的進位制,返回該值對應的十進位制數。預設情況下,parseInt的第二個引數為10,即預設是十進位制轉十進位制。

parseInt('1000') // 1000
// 等同於
parseInt('1000', 10) // 1000

(3)parseFloat() 方法用於將一個字串轉為浮點數。

(4)isNaN方法可以用來判斷一個值是否為NaN

(5)isFinite方法返回一個布林值,表示某個值是否為正常的數值。

3.Number 數值轉換

Number ()函式的轉換規則如下

如果是 Boolean 值,true 和 false 將分別被轉換 1 和 0 。

如果是數字值,只是簡單的傳入和返回。

如果是 null 值, 返回 0 。

如果是 undefined ,返回 NaN 。

如果是字串,遵循下列規則

如果字串中只包含數字(包括前面帶正號或負號的情況),則將其轉換為十進位制數值,即“ 1 ”會變成 1,“123” 會變成               123 。而“011”會變成11

如果字串中包含有限的浮點格式,如“1.1”,則將其轉換為對應的浮點數值(同樣,也會忽略前導零)

如果字串中包含有效的十六進位制格式,例如“0xf”,則將其轉換為相同大小的十進位制整數值;

如果字串是空的(不包含任何字元),則將其轉換為 0;

如果字串中包含除上述格式之外的字元,則將其轉換為 NaN 。


如果是物件,則呼叫物件的 valueOf ()方法,然後依照前面的規則轉換返回的值。如果轉換的結果是 NaN ,則呼叫物件的toString () 方法,然後再次依照前面的規則轉換返回的字串值。