Number()
、parseInt()
、parseFloat()
都可以轉為數字的方法,其功能如下:
各型別轉換成數字。
Number("123"); //123
Number("hello"); //字串非數字,嘗試轉型後回傳NaN
NaN (Not a Number),意思是「非數值」。使用typeof NaN會回傳"number"。
Number(true); //回傳1
Number(false); //回傳0
null
和 undefined
轉數字Number(null); //回傳0
Number(undefined); //回傳NaN
Number({}); //NaN
Number([]); //0
Number([123]); //123
Number([1, 2]); //NaN
Number({ age: 18 }); //NaN
JavaScript用來解析字串,轉換為整數(Integer)。可以指定進位制,沒有指定預設為十進位。
語法
parseInt(string, radix)
string
:解析整數開頭的字串,會忽略字串開頭的空白字元,回傳整數或NaN。radix
(選填):指定進位制,介於2~36之間。若radix小於2或大於36,parseInt()會回傳NaN。為了避免解析錯誤,建議要加上radix。
MDN:
For radices above 10, letters of the English alphabet indicate numerals greater than 9. For example, for hexadecimal numbers (base 16), A through F are used. The letters are case-insensitive.
這裡還有說到,如果進位制大於10,會使用英文字母A-F(不區分大小寫)代表數字的10-15。
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15
遇到無法解析的字元,就會停止,回傳有解析的部分,例如:
parseInt("258"); //258
parseInt("258abc"); //258,後面abc無法解析就停止
如果字串非數字開頭:
parseInt("hello123"); //NaN
如果是浮點數,取整數位,直接忽略小數位:
parseInt("3.14"); //3
parseInt("1.88"); //1
指定 radix
進制位:
parseInt("1010", 2); //2進制,回傳10
parseInt("1765", 8); //8進制,回傳1013
parseInt("0xb7", 16); //16進制,回傳183
如果沒有寫進制位,parseInt()不會識別這些前綴開頭,例如:0x
、0b
等
parseInt("0b101", 2); // 回傳5,有寫二進位
parseInt("0b101"); // 回傳0
所以parseInt("0b101")
回傳0,是因為0b
被看為無效字元,所以只解析到0
就停止,並回傳0。
將字串解析為浮點數。可解析整數、小數以及科學記號法表示的數字,進位部分只解析十進位字串。
語法
parseFloat(string)
string
:解析字串中的數字,會忽略字串開頭的空白字元,回傳浮點數或NaN。
解析浮點數:
parseFloat("3.14"); //3.14
字串非數字開頭:
parseFloat("ABC3.14"); //回傳NaN,前面開頭ABC無法解析就停止
遇到無法解析的字元,就會停止,回傳有解析的部分,例如:
parseFloat("3.14ABC"); //回傳3.14
可以使用科學記號:能正確解析科學記號法的數字。
parseFloat("1.23e4"); // 回傳12300
以上分享~謝謝!
MDN - Number()
MDN - parseInt()
MDN - parseFloat()