我有这个:
if (dTotal % 1 !== 0 || nTotal % 1 !== 0) {
//stuff
}
并且变量nTotal是数字0.2,但if语句中的内容正在发生。我知道这两个变量是数字,而不是字符串。如果两者 nTotal和dTotal都是整数,我只想要if语句中的内容。
答案 0 :(得分:3)
if (parseInt(dTotal) == parseFloat(dTotal)
&& parseInt(nTotal) == parseFloat(nTotal)) {
alert("success");
}
如果两个都是数字,那么这将有效。
答案 1 :(得分:2)
if (!(dTotal % 1 !== 0 || nTotal % 1 !== 0))
在OR子句之前需要NOT。您的原始代码说:
如果dTotal的余数除以1不是0(意味着它不是整数)OR 如果nTotal的余数除以1不是0(意味着它不是整数),那么做一些事情......
你想要与此相反,所以添加感叹号就像我一样。
答案 2 :(得分:2)
正确答案来自@IsaacRay;你只是让测试的极性反转了。
对于它的价值,接受的答案比使用%
慢十倍。
您还可以使用Math.floor
,其速度与%
:
if (Math.floor(dTotal) === dTotal && Math.floor(nTotal) === nTotal) {
Math.floor
基本上删除了数字的小数部分。通过将其与原始数字进行比较,我们可以看出该数字是否为整数。
如果可能,您可能会使用Number.isInteger
,但速度非常慢;速度是偶数parseInt
的两倍,是%
或Math.floor
的二十倍。
答案 3 :(得分:0)
dTotal % 1 !== 0
那部分可能是真的,这就是if条件为真的原因。 (您正在使用或(||)not和(&&))