JavaScript判斷數字正負數

admin發表於2017-10-30

本章節通過程式碼例項介紹一下如何判斷一個變數是正數還是負數。

貌似非常簡單的一個需求,其實深究起來還是有點麻煩的。

有些朋友可能感覺實在是太簡單了,比如下面的程式碼:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var num = 5;
if (num > 0) {
  console.log("正數");
}

貌似很簡單其實漏洞很多的,如果num等於true,同樣也會列印"正數"。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var num = true;
if (num > 0) {
  console.log("正數");
}

下面展開來介紹一下如何判斷變數的正負數:

一.判斷數字的正負:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var num = 5;
var numStr = "5";
console.log(typeof num == "number" && !isNaN(num) && num > 0)
console.log(typeof numStr == "number" && !isNaN(numStr) && numStr > 0)

上面的程式碼可以驗證一個數字的正負,數字字串不行。

二.數字字串的正負:

當然字串無所謂正負,我們無需鑽這個牛角尖。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var one = "5";
var two = "8.5";
var three = "8.578";
console.log(typeof one == 'string' && one.match(/^\d+((\.\d+){0,})?$/) && parseFloat(one) > 0);
console.log(typeof two == 'string' && two.match(/^\d+((\.\d+){0,})?$/) && parseFloat(two) > 0);
console.log(typeof three == 'string' && three.match(/^\d+((\.\d+){0,})?$/) && parseFloat(three) > 0);

上面的程式碼可以驗證一個數字字串轉換為數字後的正負。

三.以上兩者的綜合:

很多時候可能無論是真正的數字還是字串可能都要考慮在內,下面就來封裝一下。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var one = 5;
var two = "8.5";
var three = "8.578";
 
function check(arg) {
  if (typeof arg == "string") {
    return !!(arg.match(/^\d+((\.\d+){0,})?$/) && parseFloat(arg) > 0)
  } else if (typeof arg == "number") {
    return !isNaN(arg) && arg> 0;
  } else {
    return "引數不正確";
  }
}
console.log(check("5a"));
console.log(check(one));
console.log(check(two));
console.log(check(three));

上面的程式碼實現了我們的要求,更多內容可以參閱相關閱讀。

相關閱讀:

(1).match()參閱正規表示式match()函式一章節

(2).parseFloat()參閱javascript parseFloat()一章節。

(3).typeof參閱javascript typeof運算子一章節。

(4).isNaN()參閱javascript isNaN()一章節。

相關文章