JS字串轉數字方法總結

2021-09-13 16:42:29 字數 1552 閱讀 2154

string轉換為number有很多種方式,我可以想到的有5種!但總有一些情況讓人猝不及防,總結到這裡供自己日後查詢方便
根據jsperf.com的基準測試,大多數瀏覽器對parseint的響應最佳。雖然它是最快的方式,但使用preseint會碰到一些常見陷阱:parseint: 沒有傳入基數時,預設是傳入的基數為10 parseint(num, 10),如果你不知道num屬性的型別,不要使用parseint進行字串轉數字。

parseint('043') // returns 0 部分老瀏覽器.

parseint('20.mp4') // returns 20

如果你不解析16進製制數,這是乙個非常好的選擇。字串中的負十六進製制數字是乙個特殊情況,如果你用parsefloat解析,結果是不正確的。為了避免程式出現nan的情況,應該檢查轉化後的值。

parseint(-0xff) // returns -255

parseint("-0xff") // returns -255

parsefloat(-0xff) // returns -255

parsefloat("-0xff") // returns 0

parsefloat('44.jpg') // return 44

可以把字串轉換成整數,但他不是浮點數。如果是乙個字串轉換,它將返回0;這是什麼原理?通過翻轉)每個位,也稱為數字的a1補碼。你可以使用它,但注意只能用來儲存整數。所以通常情況不要用它,除非你能確定這個數是在32位整數之間的值(因為呼叫的toint32的規範)。按位非:用它確保輸入中沒有字元,僅用於整數。

~~1.23 // returns 1

~~"1.23" // returns 1

~~"23" // returns 23

~~"hello world" // returns 0

number與以上提及的轉換方式一樣存在這樣的問題,解析時試圖找出你給他的數字:注意:023實際上是乙個八進位制數,無論你怎麼做,都是返回19;對於沒有單引號或雙引號的十六進製制數一樣。number也是jsperf中最慢的之一。

+"023" // returns 23一元運算子與其它的解析方式不同,如果是乙個nan值,那麼返回的也是nan 。這是我最喜歡的數值轉換方式,因為我認為任何帶有字元的物件都不應該被視為0或者根據他有多少位來「猜」。我基本使用 + 操作符,因為這個方式不容易混淆。雖然 -0 的用法也很好,但它並沒有很好的表達轉換為數字的本意。

js字串轉數字

對於js中字串轉數字的方法很多,現在我來總結下大概的思路有 1 利用js變數弱型別 12 0 實現轉換成數字 2 利用js中的number 12 以及number.parseint 12 number.parsefloat 12 強制型別轉換 3 利用js中的全域性的parseint 12 pars...

JS中字串轉數字

js提供了parseint 和parsefloat 兩個轉換函式。前者把值轉換成整數,後者把值轉換成浮點數。只有對string型別呼叫這些方法,這兩個函式才能正確執行,對其他型別返回的都是nan not a number 示例如下 parseint 123 返回值是數字123 parseint 12...

字串 字串轉數字

題目 將乙個字串轉換成數字。例如 123 123,71.02 71.02.方法一,直接呼叫庫函式atoi const char 和atof const char stoi string str include include int main 輸出結果 num int 435 num double ...