我有这样的:这段代码中的错误是什么?
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