JavaScript Number (數值)-學習筆記
Published in
7 min readApr 28, 2020
Number
物件也是數值型態的物件,Number
物件是以建構子 Number()
建立而成的。
建構式說明:
new Number(value)
參數 value
: 用來建立物件的數值。
Number() 函數 — 型別轉換
- 可以用來將其它的資料型態轉換成數值型態。
字串轉數字
Number('') //0
Number(' ') //0
Number('a') //NaN
Number('null') //NaN
Number('undefined') //NaN
Number('0') //0
Number('1') //1
布林轉數字
Number(true) //1
Number(false) //0
Number 物件內建的方法 (Methods)
Number.isNaN(value)
- 確認
value
值是否為NaN
,並回傳布林值true
、false
。
Number.isNaN(0) //false
Number.isNaN('a') //false
Number.isNaN(undefined) //false
Number.isNaN(null) //false
Number.isNaN(true) //false
Number.isNaN(false) //falseNumber.isNaN(NaN) //true
Number.isNaN(0 / 0) //true
Number.isFinite(value)
- 判斷傳入值是否為有限的數值,並回傳布林值。
Number.isFinite("0") //false
Number.isFinite(null) //false
Number.isFinite(NaN) //false
Number.isFinite(undefined) //false
Number.isFinite(1 / 0) //false
Number.isFinite(Infinity) //false
Number.isFinite(-Infinity) //falseNumber.isFinite(1) //true
Number.isFinite(2e64) //true
Number.isFinite(10 / 5) //true
Number.isInteger(value)
- 判斷傳入值是否為整數,並回傳布林值。
Number.isInteger("0") //false
Number.isInteger(true) //false
Number.isInteger(NaN) //false
Number.isInteger(undefined) //false
Number.isInteger(1 / 0) //false
Number.isInteger(0.1) //false
Number.isFinite(-Infinity) //falseNumber.isInteger(1) //true
Number.isInteger(2e64) //true
Number.isInteger(10 / 5) //true
Number.isInteger(-10) //true
parseFloat(string)
- 用來將字串轉型成浮點數,此為全域方法。
- 如無法轉換,則回傳
NaN
。
parseFloat(' 3.14 ') //3.14
parseFloat('10.5') //10.5
parseFloat('10 100 200') //10
parseFloat('10 day') //10parseFloat('day 10') //NaN
parseInt(string , radix)
- 用來將字串轉成十進制整數,此為全域方法。
- radix: 為2至36進位系統,如輸入10為十進制。
- 如無法轉換,則回傳
NaN
。
以下範例都是回傳數值13
parseInt('1101',2)
parseInt('15',8)
parseInt('d',16)
parseInt('13,dd',10)
Number.toExponential(fractionDigits)
- 將數字轉型為科學記號型式(指數)呈現,回傳科學記號字串。
- 參數
fractionDigits
:可有可無,用來表示小數點後幾位數。
let num=66.123
num.toExponential(1) //"6.6e+1"
num.toExponential(2) //"6.61e+1"
Number.toFixed(digits)
- 將數字轉成固定小數點位數,並回傳數值字串型態。
- 回傳值會四捨五入。
- 參數
digits
:可有可無,預設為0,如位數不夠時,以0補位。
let num=66.456num.toFixed() //"66"
num.toFixed(1) //"66.5" 四捨五入
num.toFixed(5) //"66.45600" 如位數不夠時,以0補位(6.23e+20).toFixed(2) //"623000000000000000000.00"
(6.23e-20).toFixed(2) //"0.00"
(-6.23).toFixed(2) //"-6.23"
Number.toLocaleString([locales [, options]])
- 某個數字在本地端的地區設定環境下表示法。
- 不同地區可能會顯示不同的小數點或千位分隔符號。
- 參數
locales
:縮寫語言代碼。 - 參數
options
:屬性的類別如下:
'decimal'
用於純數字格式
'currency'
用於貨幣格式
'percent'
用於百分比格式
'unit'
用於單位格式
let num=66.456num.toLocaleString('ar-EG') // "٦٦٫٤٥٦"num.toLocaleString('ja-JP',{ style: 'currency', currency: 'JPY' }) //"¥66"
Number.toPrecision(precision)
- 將數字以指定長度型式,並以字串回傳。
- 回傳值會四捨五入。
- 如指定的長度大於數值,則以0補位。
- 如指定的長度小於數值,則用科學記號表示。
let num=66.456
num.toPrecision(1) //"7e+1" 指定的長度小於數值,科學記號表示
num.toPrecision(3) //"66.5"66.5.toPrecision(2) //"67" 四捨五入
66.4.toPrecision(5) //"66.400" 指定的長度大於數值,以0補位
Number.toString([radix])
- 將數值轉型成字串,並回傳字串型式。
- 參數
radix
:是介於2~32進制的整數,預設值為10。 - 另一個用述,轉2~32進制的方法。
let num=8(10).toString() //"10"
(10.5).toString() //"10.5"num.toString(2) //"1000"
num.toString(8) //"10"
num.toString(16) //"8"(-10).toString(2) //"-1010"
Number.valueOf()
- 將
Number()
物件轉成基本數值型態,並回傳Number()
物件原始值。
let num=new Number(10)typeof num //"object"
num.valueOf() //10
typeof num.valueOf() //"number"