數字值是由一連串數字字元組成,例如:
5
數字資料類型也包含一些特殊的全域屬性,
代表數字概念,例如 Infinity
和 NaN
,這是一個數值的意義。
「不是數字」嘗試算出數學結果的可能結果
非數字值的計算。
數字物件
值傳遞至 Number()
函式時,該值會轉換為
與實際數字相等的數值舉例來說,數字字串會產生對應的
原始數字:
Number( "10" );
> 10
將 false
或 null
值傳遞至 Number()
會傳回 0
,true
會傳回
1
。
Number( null );
> 0
Number( false );
> 0
Number( true );
> 1`
如果無法轉換值,例如 undefined
或字串時
包含非數字字元,Number
函式會傳回 NaN
:
Number( undefined );
> NaN
Number( "The number 3." );
> NaN
如通訊協定繼承所述,
您幾乎或完全沒有理由使用 Number
物件做為
建構函式,因為此函式會建立 Number
物件,而非數字常值。
let numObject = new Number( 15 );
numObject;
> Number { 15 }
這個物件的行為會與指派給數學運算的值相同,但 無法對數字常值進行嚴格的等式比較,因為資料類型 除非對常值提供任何實際助益,否則不匹配。
let tenObject = new Number( 10 );
tenObject + 5;
> 15
tenObject === 10;
> false
浮點數和整數
JavaScript 只有一種數字類型:64 位元 IEEE 754-1985 雙精度浮點數
浮點數
-2^1024
和2^1024
。JavaScript 在記憶體中儲存任何數字之前,會先
將該數字轉換為二進位浮點數 (也稱為「浮點數」)。
這個 64 位元儲存空間 (一個正或負「符號」,11 位元代表 指數、分數為 52 位元) 會導致任何數字發生精確度錯誤 不符合允許的範圍內的數字。這項限制原本就存在 轉換為 JavaScript 數字資料類型
0.1 + 0.7
> 0.7999999999999999
數字值可以改為儲存為「整數」,也就是浮點數
而 -(2^53 − 1)
至 2^53 − 1
之間沒有小數。由於浮點數和
整數的儲存方式與一般情況相同,但沒有實質差異
呈現這些數字的運作原理不過,我們建議在隨時使用整數
以避免精確度錯誤
數字運算子
使用標準數學運算子搭配數字基元時, 數學運算順序 apply:系統會先評估以括號括住的任何運算式,後面接著 指數、乘法、除法、加和減法。
運算子 | 名稱 | 說明 | 用量 | 結果 |
---|---|---|---|---|
+ |
附加 | 2+2 |
4 |
|
- |
減 | 4-2 |
2 |
|
* |
乘 | 2*5 |
10 |
|
/ |
部門 | 10/5 |
2 |
|
++ |
遞增 | 將數字加到數字中 | 2++ |
3 |
-- |
減少 | 將數字從數字中減去 | 3-- |
2 |
** |
指數 | 傳回提高第一個 的結果 第一個運算元的運算元。 |
2**4 |
16 |
% |
其餘 | 傳回 時剩餘的餘數 第一個運算元除以第二個運算元 |
12%5 |
2 |
您也可以使用數學指派運算子來執行數學運算 對變數值執行運算,並立即將 傳回到變數的新值
運算子 | 名稱 | 用量 |
---|---|---|
+= |
新增指派作業 | myValue += 2 |
-= |
減量指派 | myValue -= 2 |
*= |
乘法指派 | myValue *= 2 |
/= |
部門分配 | myValue /= 2 |
**= |
指數指派 | myValue **= 2 |
%= |
其餘指派 | myValue %= 2 |
符號值
數字基元也適用於幾個特殊案例:「不是數字」
值 (NaN
) 和代表無限大的值,可以是正數
(Infinity
) 或負 (-Infinity
)。
由於會除以零 (例如案件),您很少會遇到 Infinity
多數程式設計語言都會擲回錯誤:
10 / 0
> Infinity
請記住,JavaScript 區分大小寫。Infinity
是數字資料類型
表示無限大的概念,但 infinity
沒有特殊意義:
Infinity
> Infinity
infinity
> Uncaught ReferenceError: infinity is not defined
NaN
(也就是「不是數字」)
在算術運算結果時更常顯示
就不能以數字表示舉例來說,JavaScript 會嘗試
值和結構定義的資料類型,字串常值僅包含數字
用在數學運算中:
"2" * 2;
> 4
但如果無法將該字串剖析為數值,則可使用數學運算 作業會產生非數字:
"two" * 2;
> NaN
在以數字表示無效值的情況下,系統就會傳回 NaN
先進行數學運算相關示例包括:
- 失敗的轉換次數 (例如:
parseInt( undefined )
) - 算術運算中結果不是實數 (例如
0 / 0
、Math.sqrt( -10 )
) - 帶有不確定結果的算術運算 (
0 * Infinity
) - 包含明確
NaN
(NaN + 2
) 或NaN
筆結果 (2 * "string" / 2
)
隨堂測驗
將 false
傳遞至 Number()
會有什麼結果?
下列數學運算的結果是什麼?
"Six" * 3