【问题标题】:Condition (num % 3 === 0): why does it need to compare to 0? [closed]条件(num % 3 === 0):为什么需要和0比较? [关闭]
【发布时间】:2017-01-22 04:47:06
【问题描述】:

我在这里有一个简单的 fizzbuzz:

var num = 1;

while (num <= 20) {
    switch(true){
        case(num%3 === 0 && num%5 === 0):
            console.log('fizzbuzz');
            break;
        case(num%3 === 0):
            console.log('fizz');
            break;
        case(num%5 === 0):
            console.log('buzz');
            break;
        default:
            console.log(num);
    }
    num++;
}

在这行模数后面跟0比较是什么意思:num%3===0

为什么不只是num%3

【问题讨论】:

  • 如果一个数字 mod 3 等于 0...?你不明白什么?
  • 我找不到关于该比较意味着什么的明确解释。为什么不只是num%3
  • if(num%3)if(num%3==0) 是完全相反的。前者在数不可整除时为真,后者在可整除时为真
  • 因为如果num%3 的计算结果为 0,则 0 是错误的。相反,您需要检查是否等于 0,如果可整除,这将是真实的。
  • 仅供参考:num%3 == 0!(num%3) 是等价的 - 如果有帮助的话

标签: javascript fizzbuzz


【解决方案1】:

如果您保留num%3 而不是num%3===0 , 含义完全改变,因为进入其中一种情况,它应该被 3 整除,所以如果不是,它将进入默认情况,因为 num%3 不等于 0。 简而言之,我们使用 % 运算符来检查它是否可整除,就好像答案是 0 当且仅当它是可整除的,即余数为 0

【讨论】:

  • 谢谢,我不明白模数会检查余数
  • 不客气 :)
【解决方案2】:

假设 num = 1,num%3 等于 1。因此,如果您评估 if(num%3),它将评估为 true。而如果您评估 if(num%3===0) if 将评估为假。

此外,=== 确保您在不同类型的情况下不允许任何值,但是在这种情况下,== 和 === 不会有太大区别。

【讨论】:

    猜你喜欢
    • 2020-02-23
    • 1970-01-01
    • 2012-07-06
    • 2023-01-27
    • 2023-03-28
    • 1970-01-01
    • 2023-01-22
    • 2016-10-20
    • 1970-01-01
    相关资源
    最近更新 更多