1. 程式人生 > >isNaN+parseFloat進行統計以及對NaN的處理

isNaN+parseFloat進行統計以及對NaN的處理

static es2017 back 2-2 對數 解釋 參數 就是 數字

今天遇到這麽一個需求:

  對數據進行統計,可是在統計的時候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

的前綴不能解釋為整數,則返回 NaN(而不是數字)。

parseInt("abc")     // 返回 NaNparseInt("12abc")   // 返回 12

可以用 isNaN 方法檢測 NaN

isNaN 方法

返回一個 Boolean 值,指明提供的值是否是保留值 NaN (不是數字)。

isNaN(numValue)

必選項 numvalue 參數為要檢查是否為 NAN 的值。

說明

如果值是 NaN, 那麽 isNaN 函數返回 true ,否則返回 false 。 使用這個函數的典型情況是檢查 parseIntparseFloat 方法的返回值。

還有一種辦法,變量可以與它自身進行比較。 如果比較的結果不等,那麽它就是 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的處理