我有這樣的:這段代碼中的錯誤是什麼?
if (dTotal % 1 !== 0 || nTotal % 1 !== 0) {
//stuff
}
和變量n總計是多少0.2,但在if語句發生的東西。我知道這兩個變量是數字,而不是字符串。我只是想要在if語句中發生的事情發生,如果都 nTotal和dTotal是整數。
我有這樣的:這段代碼中的錯誤是什麼?
if (dTotal % 1 !== 0 || nTotal % 1 !== 0) {
//stuff
}
和變量n總計是多少0.2,但在if語句發生的東西。我知道這兩個變量是數字,而不是字符串。我只是想要在if語句中發生的事情發生,如果都 nTotal和dTotal是整數。
正確的答案是從@IsaacRay;你只是將測試的極性顛倒過來。
對於它的價值,接受的答案比使用%
慢10倍左右。
你也可以使用Math.floor
這是一樣快%
:
if (Math.floor(dTotal) === dTotal && Math.floor(nTotal) === nTotal) {
Math.floor
基本上消除數的小數部分。通過將它與原始數字進行比較,我們可以看到數字是否爲整數。
如果可能,您可能會試圖使用Number.isInteger
,但它非常慢;是parseInt
的兩倍,是%
或Math.floor
的二十倍。
if (!(dTotal % 1 !== 0 || nTotal % 1 !== 0))
您的OR子句之前需要一個NOT。你的原始代碼是這樣說的:
如果dTotal除以1的餘數不是0(意思是它不是一個整數)或 如果nTotal除以1的餘數不是0(意思是它不是一個整數)東西...
你想要的是相反的,所以添加感嘆號,因爲我已經做了。
if (parseInt(dTotal) == parseFloat(dTotal)
&& parseInt(nTotal) == parseFloat(nTotal)) {
alert("success");
}
如果兩個都是數字,那麼這將工作。
dTotal % 1 !== 0
這部分可能是真的,這就是if條件爲真的原因。 (您正在使用或(||)不和(& &))
的可能重複[?如何檢查變量是否在Javascript的整數(http://stackoverflow.com/questions/14636536/how-to-check-if-a-變量是一個整數在JavaScript中) – 2014-11-05 02:06:21
'0.2%1 === 0.2',你可以在Javascript控制檯中測試 – 2014-11-05 02:07:09
dTotal的值是什麼? – 3Dom 2014-11-05 02:10:54