isNaN+parseFloat進行統計以及對NaN的處理
今天遇到這麽一個需求:
對數據進行統計,可是在統計的時候parseFloat的時候出來一個NaN。後來用isNaN判斷,如果是NaN,就給其設置一個初值.
先看對兩個方法的解釋
parseFloat:
返回由字符串轉換得到的浮點數。
parseFloat(numString)
必選項 numString 參數是包含浮點數的字符串。
說明
parseFloat 方法返回與 numString 中保存的數相等的數字表示。如果 numString 的前綴不能解釋為浮點數,則返回 NaN (而不是數字)。
parseFloat("abc")
//
返回NaN
。parseFloat("1.2abc")
//
返回1.2
。
可以用 isNaN 方法檢測 NaN。
parseInt 方法
返回由字符串轉換得到的整數。
parseInt(numString, [radix])
參數
numString
必選項。要轉換為數字的字符串。
radix
可選項。在 2 和 36 之間的表示 numString 所保存數字的進制的值。如果沒有提供,則前綴為 ‘0x‘ 的字符串被當作十六進制,前綴為 ‘0‘ 的字符串被當作八進制。所有其它字符串都被當作是十進制的。
說明
parseInt 方法返回與保存在 numString 中的數字值相等的整數。如果 numString
parseInt("abc")
//
返回NaN
。parseInt("12abc")
//
返回12
。
可以用 isNaN 方法檢測 NaN。
isNaN 方法
返回一個 Boolean 值,指明提供的值是否是保留值 NaN (不是數字)。
isNaN(numValue)
必選項 numvalue 參數為要檢查是否為 NAN 的值。
說明
如果值是 NaN, 那麽 isNaN 函數返回 true ,否則返回 false 。 使用這個函數的典型情況是檢查 parseInt 和 parseFloat 方法的返回值。
還有一種辦法,變量可以與它自身進行比較。 如果比較的結果不等,那麽它就是 NaN 。 這是因為 NaN 是唯一與自身不等的值。
最後附一個isNaN+parseFloat統計的例子:
var conutAllInfo=function(){ var dan_numQues=parseFloat($(".danxuanBigTitle .numQues").text());// 單選題數 var dan_score=parseFloat($(".danxuanBigTitle .el_modifiedGrade").val());// 單選分值 var dan_total=parseFloat($(".danxuanBigTitle .numTotal").text());// 單選總分 var duo_numQues=parseFloat($(".duoxuanBigTitle .numQues").text());// 多選總數 var duo_score=parseFloat($(".duoxuanBigTitle .el_modifiedGrade").val());// 多選分值 var duo_total=parseFloat($(".duoxuanBigTitle .numTotal").text());// 多選總分 var pan_numQues=parseFloat($(".panduanBigTitle .numQues").text());// 判斷總數 var pan_score=parseFloat($(".panduanBigTitle .el_modifiedGrade").val());// 判斷分值 var pan_total=parseFloat($(".panduanBigTitle .numTotal").text());// 判斷總分 $("#dan_num").text(validateNaN(dan_numQues)); $("#dan_score").text(validateNaN(dan_score)); $("#dan_total").text(validateNaN(dan_total)); $("#duo_num").text(validateNaN(duo_numQues)); $("#duo_score").text(validateNaN(duo_score)); $("#duo_total").text(validateNaN(duo_total)); $("#pan_num").text(validateNaN(pan_numQues)); $("#pan_score").text(validateNaN(pan_score)); $("#pan_total").text(validateNaN(pan_total)); $("#all_total").text(parseFloat($("#dan_total").text())+parseFloat($("#duo_total").text())+parseFloat($("#pan_total").text())); $("#myModal").modal({backdrop: "static", keyboard: false}); } // 驗證是否是數字,不是數字返回零 var validateNaN=function(num){ if(isNaN(num)){ return 0; }else return num; }
結果:
isNaN+parseFloat進行統計以及對NaN的處理