首頁 web前端 js教程 Number()、parseInt()和parseFloat()數值轉換

Number()、parseInt()和parseFloat()數值轉換

Jun 22, 2017 pm 02:08 PM
parseint 數位 進行

有3個函數可以把非數值轉換成數值:Number()、parseInt()和parseFloat()。第一個函數,即轉型函數Number()可以用於任何資料類型,而另兩個函數則專門用於把字串轉換成數值。這個3個函數對於同樣的輸入會有不同的結果。

  Number()函數的轉換規則如下:

如果是Boolean值,true和false將分別被轉換為1和0
如果是是數字值,只是簡單的傳入和回傳
如果是null值,傳回0
如果是undefined,則傳回NaN
如果是字串,遵循下列規則:
如果字串中只包含數字,則將其轉換為十進制數值,級“1”會變成1,“123”會變成123,而“011”會變成11(前面的0被忽略了)
如果字串中只包含有效的浮點格式,如“1.1”,則將其轉換為對應浮點數值(同樣,也會忽略前導零)
如果字串中只包含有效的十六進位格式,例如“0xf”,則將其轉換為相同大小的十進制整數值
如果字串是空的(不包含任何字符),則將其轉換為0
如果字串中包含除上述格式之外的字符,則將其轉換為NaN
如果是對象,則呼叫對象的valueOf()方法,然後依照前面的規則轉換回傳的值。如果轉換的結果是NaN,則呼叫物件的toString()把各種資料型別轉換為數值確實有點複雜。以下是幾個具體例子:

var num1 = Number("Hello world!"); //NaN
var num2 = Number(""); //0
var num3 = Number("000011"); //11
var num4 = Number("true"); //1
登入後複製

  首先,字串「Hello world!」會轉換為NaN,因為其中不包含任何有意義的數字值。空字串會被轉換為0。字串“000011”會被轉換為11,因為忽略了前導零。最後,true值被轉換為1。

  由於Number()函數在轉換字串時比較複雜而且不夠合理,因此在處理整數的時候更常用的是parseInt()函數。 parseInt()函 數在轉換字串時,更多的是看其是否符合數值模式。它會忽略字串前面的空格,直到找到第一個非空格字元。如果第一個字元不是數字字元或負號,parseInt()就會回傳NaN;也就是說,用parseInt()轉換空字串會回傳NaN(Number()對空字串回傳0)。如果第一個字符是數字字符,parseInt()會繼續解析第二個字符,直到解析完所有後續字符或遇到了一個非數字字符。例如,「123blue」會被轉換為 1234,因為「blue」會被完全忽略。類似地,「22.5」會被轉換成22,因為小數點並不是有效的數字字元。

  如果字串中的第一個字符是數字字符,parseInt()也能夠識別出各種整數格式(即十進制、八進制、十六進位)。也就是說,如果字串以“0x”開頭且後跟數字字符,就會將其當作一個十六進制整數;如果字串以“0”開頭且後跟數字字符,則將其當作一個八進制數來解析。

  為了更好地理解parseInt()函數的轉換規則,下面給出了一些例子:

var num1 = parseInt("1234blue"); //1234
var num2 = parseInt(""); //NaN
var num3 = parseInt("0xA") //10(十六进制)
var num4 = parseInt("22.5"); //22
var num5 = parseInt("070"); //56(八进制)
var num6 = parseInt("70"); //(70)十进制
var num7 = parseInt("0xF") //15(十六进制)
登入後複製

  理解這幾個例子時,最關鍵的是要注意parseInt()解析“070”和“70”的不同方式。此時「070」中的前導零表示這是一個八進位(而非 十進位)格式的字串,因此結果是56(注意這個結果與呼叫Number()函數不同)。而“70”,由於沒有前導零,因此就被轉換成了70。為了消除 使用parseInt()函數時可能導致的上述困惑,ECMAScript也為這個函數提供了第二個參數:轉換時所使用的基數(即多少進位)。

  如果要知道要解析的值是十六進位格式的字串,那麼指定基數16為第二個參數,可以保證得到正確的結果,例如:

var num = parseInt("0xAF", 16); //175
  實際上,如果指定了16作為第二個參數,字串可以不帶前面的“0x”,如下所示:

var num1 = parseInt("AF", 16); //175
var num2 = parseInt("AF"); //NaN
登入後複製

  這個例子中的第一個轉換成功了,而第二個則失敗了。差別在於第一個轉換傳入了基數,明確告訴parseInt()要解析一個十六進位格式的字串;而第二個轉換發現第一個字元不是數字字符,因此就自動終止了。

  指定基數會影響轉換的輸出結果。例如:

var num1 = parseInt("10", 2); //2
var num2 = parseInt("10", 8);  //8
var num3 = parseInt("10", 10); //10
var num4 = parseInt("10", 16); //16
登入後複製

  由於不指定基數則意味著讓parseInt()決定如何解析輸入的字串,因此為了避免錯誤的解析,我們建議無論在什麼情況下都明確指定基數——特別是在像下面這樣處理八進制的情況下:

var num1 = parseInt("010"); //8
var num2 = parseInt("010", 8); //8
var num2 = parseInt("010", 10); //10
登入後複製

  在这个例子中,“010”会因为第二个参数不同而被转换成不同的值。第一行的转换很直观,即让parseInt()决定如何转换。由于第一个字符是 “0”而后面也是数字字符,因而parseInt()假设它是一个八进制数。实际上,parseInt()的这个默认行为域第二行转换中明确了基数行为是 一致的。第三行传入基数10,因此parseInt()就会忽略字符串中的前导零,而只解析其余的数字符。

  多数情况下,我们要解析的都是十进制数值,因此始终将10作为第二个参数是非常必要的。

  与parseInt()函数类似,parseFloat()也是从第一个字符(位置0)开始解析每个字符。而且也是一直解析到字符串末尾,或者解析 到遇见一个无效的浮点数字字符为止。也就是说,字符串中的第一个小数点是有效的,而第二个小数点是无效的,因此它后面的字符串将被忽略。举例来 说,“22.34.5”将会被转换为22.34。

  除了第一个小数点有效之外,parseFloat()与parseInt()的第二个区别在于它始终都会忽略前导零。parseFloat()可以 识别前面讨论过的所有浮点数值格式,也包括十进制整数格式。但十六进制格式的字符串始终会被转换为0。由于parseFloat()只解析十进制值,因此 它没有用第二个参数指定基数的用法。最后还要注意一点:如果字符串包含的是一个可解析为整数的数(没有小数点,或者小数点后面都是 零),parseFloat()会返回整数。以下是使用parseFloat()转换数值的几个典型示例:

var num1 = parseFloat("1234blue"); //1234
var num1 = parseFloat("0xA"); //0
var num1 = parseFloat("22.5"); //22.5
var num1 = parseFloat("22.34.5"); //22.34
var num1 = parseFloat("0908.5"); //908.5
var num1 = parseFloat("3.125e7"); //31250000
登入後複製

以上是Number()、parseInt()和parseFloat()數值轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1422
52
Laravel 教程
1316
25
PHP教程
1267
29
C# 教程
1239
24
全角英文字母轉換為半角形式的實用技巧 全角英文字母轉換為半角形式的實用技巧 Mar 26, 2024 am 09:54 AM

全角英文字母轉換為半角形式的實用技巧在現代生活中,我們經常會接觸到英文字母,在使用電腦、手機等設備時也經常需要輸入英文字母。然而,有時候我們會遇到全角英文字母的情況,而我們需要使用的是半角形式。那麼,如何將全角英文字母轉換為半角形式呢?以下就為大家介紹一些實用的技巧。首先,全角英文字母和數字是指在輸入法中佔據一個全角位置的字符,而半角英文字母和數字則是佔據一

PHP 月份轉換為英文月份的實作方法詳解 PHP 月份轉換為英文月份的實作方法詳解 Mar 21, 2024 pm 06:45 PM

這篇文章將詳細介紹如何將PHP中的月份轉換為英文月份的方法,同時給出具體的程式碼範例。在PHP開發中,有時候我們需要將數字表示的月份轉換為英文的月份,這在一些日期處理或資料展示的場景下非常實用。以下將從實作原理、具體程式碼範例和注意事項等方面進行詳解。一、實作原理在PHP中,可以透過使用DateTime類別和format方法來實現將數位月份轉換為英文月份。 Date

全角英文字母變成半角字母的方法 全角英文字母變成半角字母的方法 Mar 25, 2024 pm 02:45 PM

全角英文字母變成半角字母的方法在日常生活和工作中,有時候我們會遇到需要將全角英文字母轉換為半角字母的情況,例如在輸入電腦密碼、編輯文件或設計排版時。全角英文字母和數字是指寬度與中文字符相同的字符,而半角英文字母則是指寬度較窄的字符。在實際操作中,我們需要掌握一些簡單的方法,將全角英文字母轉換為半角字母,以便更方便地處理文字和數字。一、全角英文字母與半角英

qq音樂怎麼轉換mp3格式 手機上qq音樂轉mp3格式 qq音樂怎麼轉換mp3格式 手機上qq音樂轉mp3格式 Mar 21, 2024 pm 01:21 PM

qq音樂讓大家盡情享受觀影解悶,每天都可以使用這個軟體,輕鬆滿足自己的使用,優質海量的歌曲,任由大家暢聽,也可以下載保存起來,下次聽的時候,不需要網絡,而在這裡下載的歌曲不是MP3格式的,無法在其他平台使用,會員歌曲過期後也沒有辦法再聽了,所以很多小伙伴們,都想要將歌曲轉換成MP3格式的,在這裡小編為你們提供方法,幫助大家都可以使用起來!  1、開啟電腦qq音樂,點選右上角【主選單】按鈕,點選【音訊轉碼】,選擇【新增歌曲】選項,新增需要轉換的歌曲;  2、新增歌曲完畢,點選選擇轉換為【mp3

PHP教學:如何將int型別轉換為字串 PHP教學:如何將int型別轉換為字串 Mar 27, 2024 pm 06:03 PM

PHP教學:如何將int型別轉換為字串在PHP中,將整型資料轉換為字串是常見的操作。本教學將介紹如何使用PHP內建的函數將int型別轉換為字串,同時提供具體的程式碼範例。使用強制型別轉換:在PHP中,可以使用強制型別轉換的方式將整型資料轉換為字串。這種方法非常簡單,只需要在整型資料前加上(string)即可將其轉換為字串。下面是一個簡單的範例程式碼

全角英文字母轉換為半角字母的簡單教程 全角英文字母轉換為半角字母的簡單教程 Mar 25, 2024 pm 09:21 PM

使用電腦輸入英文時,有時候我們會遇到全角英文字母和半角英文字母的差異。全角英文字母是指在輸入法為中文模式下,按下Shift鍵和英文字母鍵組合輸入的字符,它們佔據一個全角字符寬度。而半角英文字母則是指在輸入法為英文模式下直接輸入的字符,它們佔據半個字符寬度。在某些情況下,我們可能需要將全角英文字母轉換為半角字母,以下是一個簡單的教學:首先,打開文字編輯器或任

快速了解 PHP 中的 ASCII 數值轉換 快速了解 PHP 中的 ASCII 數值轉換 Mar 28, 2024 pm 06:42 PM

PHP中的ASCII數值轉換是程式設計中常會遇到的問題。 ASCII(AmericanStandardCodeforInformationInterchange)是一種用於將字元轉換為數字的標準編碼系統。在PHP中,我們經常需要透過ASCII碼來實現字元和數字之間的轉換。本文將介紹如何在PHP中進行ASCII數值轉換,並給予具體的程式碼範例。一、將字符

exe轉php:實作功能擴充的有效策略 exe轉php:實作功能擴充的有效策略 Mar 04, 2024 pm 09:36 PM

EXE轉PHP:實現功能擴展的有效策略隨著互聯網的發展,越來越多的應用程式開始向web化遷移,以實現更大範圍的用戶訪問和更便捷的操作。在這個過程中,將原本以EXE(執行檔)方式運作的功能轉換為PHP腳本的需求也逐漸增加。本文將探討如何將EXE轉換為PHP來實現功能擴展,同時給出具體的程式碼範例。為什麼將EXE轉換為PHP跨平台性:PHP是一種跨平台的語言

See all articles