JavaScript 將字符串轉換為數字
簡介
管理數據是編程的基本概念之一。將數字轉換為字符串是一種常見且簡單的操作。反之亦然,將字符串轉換為數字。
字符串轉數字
與前面展示的方法一樣,JavaScript 還提供了輕鬆將字符串轉換為原始數字的函數。這些是 parseInt()
, parseFloat()
, Math.floor()
, Math.ceil()
, Unary Operator / Multiply by 1
.
.parseInt()
將 String 作為第一個參數,以及該 String 將轉換為的基數。此方法始終返回一個整數。.parseFloat()
接受一個字符串作為參數,並返回等效的浮點數。Math.floor()
用於對整數或浮點數進行舍入。它返迴向下舍入的最接近的整數。Math.ceil()
可用於對整數或浮點數進行四捨五入。Unary Operator
通過添加+
在字符串之前簽名,如果格式正確,它將被轉換為數字。Multiply by 1
如果一個String乘以原始數字1
, 字符串會變成數字。
.parseInt()
基數可以通過為我們要解析的數字添加前綴來定義:
- 無前綴 - 如果沒有前綴,則基數為 10(十進制)。
- 0 - 如果前綴是
0
,則基數為 8(八進制)。不過,此功能已被棄用。 - 0x - 如果前綴是
0x
,則基數為 16(十六進制)。
雖然,我們可以簡單地在方法調用中添加一個可選參數,定義基礎:
let str = '353';
let fltStr = '353.56';
let binStr = '7';
let nanStr = 'hello';
parseInt(str); // 353
parseInt(fltStr); // 353
parseInt(binStr, 2); // 111 (Binary)
parseInt(nanStr); // NaN (Not a Number)
.parseFloat()
let str = '100';
let fltStr = '100.21';
let nanStr = 'bye';
parseFloat(str); // 353
parseFloat(fltStr); // 353.21
parseFloat(nanStr); // NaN
Math.floor()
令人驚訝的是,這個方法還可以接受字符串,這使它成為一種將字符串轉換為整數的方法。
let str = '100';
let fltStr = '99.89';
let nanStr = 'bye';
Math.floor(str); // 100
Math.floor(fltStr); // 99
Math.floor(nanStr); // NaN
Math.ceil()
與前面的方法非常相似,不過,這次它返回最接近的整數,向上 .
該方法可以接受字符串,也可以將字符串轉換為數字:
let str = '100';
let fltStr = '100.21';
let nanStr = 'bye';
Math.ceil(str); // 100
Math.ceil(fltStr); // 101
Math.ceil(nanStr); // NaN
請記住,如果您需要解析浮點數,那麼 Math.floor
和 Math.ceil
可能不是很好的選擇,因為它們總是會將字符串轉換為最接近的等效整數。
一元運算符
與連接空字符串一樣,還有一種解決方法,性能更好,但缺乏可讀性。
let str = '100';
let fltStr = '100.21';
let nanStr = 'greetings';
+str // 100
+fltStr // 100.21
+nanStr // NaN
+'1000' // 1000
+10.25 // 10.25
雖然簡潔有效,但它並不是 JavaScript 的一個非常知名的功能,因此不建議使用它,因為它可能會使您的代碼不那麼容易理解。
乘以 1
這種方法可以說是最快的一種:
let str = '100';
let fltStr = '100.21';
let nanStr = 'greetings';
str * 1; // 100
fltStr * 1; // 100.21
nanStr * 1; // NaN
'2000' * 1; // 2000
'102.15' * 1; // 102.15
免費電子書:Git Essentials
查看我們的 Git 學習實踐指南,其中包含最佳實踐、行業認可的標準以及隨附的備忘單。停止谷歌搜索 Git 命令並真正學習 它!
前兩種方法之所以有效,僅僅是因為 JavaScript 會嘗試同化語句中使用的數據類型,例如加法或乘法。
使用字符串和數字對象
另一種將字符串轉換為數字或將數字轉換為字符串的方法是使用 new
創建一個新的字符串或數字對象 關鍵字。
// Number to String
let numToStr = new String(2); // String {'2'}
// String to Number
let strToNum = new Number('2'); // Number {2}
但是,這種做法不鼓勵 .使用原始數據時,不應使用對象方法來創建它們。
使用 String 或 Number 類包裝器實例化原始數據類型會帶來性能和內存問題。
結論
有許多有效的數據處理方法。由程序員決定他們更喜歡哪一個,選擇性能而不是可讀性或兩者之間的平衡。
更多信息,您可以閱讀以下資源:
- parseInt
- parseFloat
- 數學.floor
- 數學.ceil