2012-03-23 80 views
2

完成sqrt()後檢查數字串是否包含小數?

如何檢查結果是否只包含整數?

我想Regex檢查一個小數 - 如果它包含一個小數,這意味着它並沒有均勻地根據整數。這對我來說是足夠的信息。

但是這個代碼心不是工作...

result = sqrt(stringContainingANumber); 
decimal = new RegExp("."); 
document.write(decimal.test(result)); 

我敢打賭,還有其他的方法來完成同樣的事情,但。

+0

的可能的複製[檢查一些有小數位/是一個整數( http://stackoverflow.com/questions/2304052/check-if-a-number-has-a-decimal-place-is-a-whole-number) – 2016-04-14 10:01:06

回答

7

。意味着任何字符。 你必須引用點。 「\」。

或者你可以測試

if (result > Math.floor(result)) { 
    // not an decimal 
} 
+0

這對我最有意義。謝了哥們! – 2012-03-23 12:13:30

+0

不能工作超過15 dighits – Bachas 2017-09-22 07:03:47

+0

當然,由於javascript數字是一個具有約15位數字精度的雙。所以你必須注意某些結果範圍的數字錯誤 – 2017-09-22 15:21:48

1

「。」在正則表達式語法中有意義,它是使用「\」轉義它所需的「任何東西」。

1

使用indexOf()

​var myStr = "1.0"; 
myStr.indexOf("."); // Returns 1 

// Other examples 
myStr.indexOf("1"); // Returns 0 (meaning that "1" may be found at index 0) 
myStr.indexOf("2"); // Returns -1 (meaning can't be found) 
+1

+1使用'.indexOf()'而不是正則表達式,因爲它比這個特定問題的正則表達式更簡單快捷。 – jfriend00 2012-03-23 12:08:25

3

可以使用%操作:

result % 1 === 0; // rest after dividing by 1 should be 0 for whole numbers 
+0

但是,我假設'result'已經是一個數字了,因爲它是'sqrt()'函數的結果。我不確定你是在解決OP所問的問題。 – jfriend00 2012-03-23 12:10:14

+0

@ jfriend00:好的。然後,我猜想使用'%'運算符更直接。 – pimvdb 2012-03-23 12:13:48

0

如果它是一個字符串,我們可以只使用分割功能,然後檢查數組的長度返回。如果它超過1,它有小數點,否則不是:)。這不適用於數字雖然:(請參閱最後的編輯工作。現在它適用於字符串,以及:)

function checkDecimal() { 
    var str = "202.0"; 
    var res = str.split("."); 
    alert(res.length >1); 
    var str1 = "20"; 

    alert(str1.split(".").length>1); 
} 

希望它可以幫助別人。 快樂學習:)

0

你正在尋找檢查字符串包含十進制數字, 你可以嘗試這樣的

var num = "123.677"; 
if (!isNaN(Number(num)) { 
alert("decimal no"); 
} 
else { 
alert("Not a decimal number"); 
} 
相關問題