摘要:在我們做網站的過程中,我們經常會用到數值轉換,比如購物車中的商品價格加和,今天我就總結一下我們常用的數值轉換。在中,有三個函數可以實現非數值轉化為數值,分別是。而和是專門用于字符串轉換為數值的。
??在我們做網站的過程中,我們經常會用到數值轉換,比如購物車中的商品價格加和,今天我就總結一下我們常用的數值轉換。
??在JS中,有三個函數可以實現非數值轉化為數值,分別是Number() 、parseInt()、parseFloat()。
??Number()函數可以用于轉換任何數據類型。而parseInt()、和parseFloat()是專門用于字符串轉換為數值的。所以這三個函數會出現相同的輸入得到不同的輸出結果。
??首先,說說Number()函數,Number()函數在轉換時會遵循一系列規則:
如果是布爾值,true和flase將轉換為1和0;
如果是數字值,只是簡單的傳入和返回。
如果是null值,返回0。
如果是undefined,返回NaN。
如果是字符串,則是這樣的規則 :
??當字符串中只包含數字(整型或浮點型)時,包括前面帶正負號的情況,會將其轉換為十進制數值,例如“142”.“12.5”會轉換為142和12.5,“014”和“021.2”會轉換為14和21.2,前面的零會忽略;當字符串中包含有效的十六進制的格式,則會將其轉換為相同大小的十進制整數值;當字符串是空的時候,即不包含任何字符時,會轉換為0;除了上述格式之外的字符,都會轉換為NaN。
??還有值得注意的一點就是一元加操作符的操作與Number()函數相同。
??其實,我們更常用的是parseInt()函數,因為Number()函數在轉換過程中挺復雜而且有些地方不太合理。
??parseInt()函數在轉換時會忽略字符串前面的空格,直到找到第一個非空格字符,如果這個字符不是數字或者負號,則會返回NaN;如果是,則繼續解析第二個直到最后一個非數字字符。舉兩個例子:
var num1=parseInt("1254dhfs"); //1254 var num1=parseInt("1254d23fs"); //1254 var num2=parseInt("12.5"); //12
第一個和第二個例子中,會轉換為1254,因為后面的字符不是數字字符。第三個例子中,會轉換為12,因為“ . ”是非數字字符。如果想讓浮點型數字全部轉換,應該用parseFloat();后面我們再說。
??parseInt()函數能狗識別各種進制格式的字符串,但必須是以數字開頭的。如下例子:
var s1=parseInt("070"); //56(八進制) var s2=paeseInt("10"); //10(十進制) var s3=parseInt("0xf"); //15(十六進制)
但是在ECMAScript 3 JavaScript引擎中,“070”是視為八進制字面量,轉換后為56;但是在ECMAScript 5 JavaScript引擎中卻已經不具有解析八進制的能力,所以前面的0被看為無效,最后結果是70。不過,parseInt()函數提供了第二個參數,用來注明是哪一個進制的值。如下例子:
var s1=parseInt("070",8); //56 var s2=parseInt("AF",16); //175 var s2=parseInt("AF"); //NaN
??parseFloat()函數與parseInt()函數類似,但是parseFloat()函數解析時,第一個小數點是有效的,第二個之后的小數點則無效,最重要的是parseFloat()函數只用于解析十進制整數格式,所以不會識別八進制和十六進制的0.會只轉換這個0,而且也沒有第二個參數來指定進制。值得注意的是,parseFloat()函數會在沒有小數點或者小數點后都是0的情況下返回整數。例子如下:
var s1=parseFloat("22.2.5"); //22.2 var s2=parseFloat("0245.5"); //245.5 var s3=parseFloat("2.000"); //2 var s4=parseFloat("2.0050"); //2.005 var s5=parseFloat("3.125e7"); //31250000 var s4=parseFloat("0xA"); //0
??????????????????????????????????????????參考自《JavaScipt高級程序設計》
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89021.html
摘要:如果參數不是數值都返回去掉非數字部分返回數字部分遇到的第一個非數字停止相比可以多識別一個和是將全局方法和,移植到對象上面,行為完全保持不變。 關于Number的常用方法和注意點 NaN NaN 是代表非數字的特殊屬性 NaN 注意點 NaN不是一個數 但是屬于number類型 typeof NaN //number NaN和NaN不相等 NaN == NaN //false 何時會出現...
摘要:注釋空數組空對象轉換為布爾型也是坑。系統會在自動類型轉換的時候調用他們,所以我們通常不需要手動調用他們。嚴格相等不存在類型轉換,對于類型不同的兩個值直接返回。 Javascript 中有5種基本類型(不包括 symbol),以及對象類型,他們在不同的運算中會被系統轉化為不同是類型,當然我們也可以手動轉化其類型。 Javascript 類型轉換中的坑極多,就連 Douglas Crock...
摘要:如何讓根據拆箱轉換,以及的隱式轉換,可以如下寫為什么計算機中所有的數據都是以二進制存儲的,所以在計算機計算時要把數據先轉換成二進制進行計算,然后把計算結果轉換成十進制。會存在精度丟失問題和的二進制都是以無線循環的小數的二進制的二進制 本想著記筆記里,但是筆記里沒有分類,還是以文章的形式,當個人總結吧,這一篇就當作JS基礎篇的記錄吧,有修改的和新增的持續更新~ 關于JS的一些小技巧 1:...
摘要:高程讀書筆記第三章語法中的一切變量函數名和操作符都區分大小寫。建議無論在任何情況下都指定基數函數與函數類似。返回對象的字符串數值或布爾值表示。 JS高程讀書筆記--第三章 語法 ECMAScript中的一切(變量、函數名和操作符)都區分大小寫。 不能把關鍵字、保留字、true、false和null用做標識符。 嚴格模式是為JavaScript定義了一種不同的解析與執行模型。在嚴格模式...
閱讀 3219·2021-11-12 10:36
閱讀 1280·2019-08-30 15:56
閱讀 2449·2019-08-30 11:26
閱讀 558·2019-08-29 13:00
閱讀 3614·2019-08-28 18:08
閱讀 2753·2019-08-26 17:18
閱讀 1907·2019-08-26 13:26
閱讀 2438·2019-08-26 11:39