首页 \ 问答 \ 检查模数1(checking number modulo 1)

检查模数1(checking number modulo 1)

我看到以下内容: if (n % 1 || n < 2) ...在某些代码中

问题是测试n % 1有什么好处? 我认为对于所有非零整数都是(false)0,在这种情况下,将它与任何东西分离是毫无意义的,因为它等价于它的分离( (false || p) == p ,对吗?)。 它检查数字是否为整数? 是!isNaN(n)的快捷方式吗?


I saw the following: if (n % 1 || n < 2) ... in some code.

The question is what good is the test n % 1? I presume it is (false)0 for all non-zero integers, in which case it would be pointless to disjoin it with anything as it would be equivalent to its disjunct ((false || p) == p, right?). Is it checking if the number is an int? Is it a shortcut for !isNaN(n)?


原文:https://stackoverflow.com/questions/39972110
更新时间:2021-09-23 15:09

最满意答案

在javascript中,所有数字都是float因此n%1返回n/1余数,因此它返回n的小数部分,如n-floor(n)为正n 。 所以:

if (n % 1 || n < 2)

应选择所有小数和小于2的所有整数(对于整数IsPrime方法,这些无效输入)。


in javascript all numbers are floats so n%1 returns remainder of n/1 so it returns the fractional part of n something like n-floor(n) for positive n. So:

if (n % 1 || n < 2)

should select all fractional numbers and all integers less then 2 (which are not valid inputs for integer IsPrime method).

相关问答

更多
  • 除了一些问题,您的代码大多是正确的: 1)如果是ISBN,你正试图计算校验和(最后一位数)。 这意味着您应该只考虑9位数: ISBNNo = raw_input("please enter a ten digit number of choice") assert len(ISBNNo) == 10, "ten digit ISBN number is expected" # ... for i in ISBNNo[0:9]: # iterate only over positions 0..9 ...
  • DivisibleBy只是做一个模数来检查最终值是否等于0,没有任何东西阻止你使用完全相同的代码制作自己的模板标签而没有最终检查 @register.filter(is_safe=False) def modulo(value, arg): return int(value) % int(arg) {% ifequal idx|modulo:3 2 %} DivisibleBy just does a modulo to check whether or not the final value ...
  • 这是不可能的,双倍只有15位有效数字。 寻找BigInt类的实现。 这里讨论C的具体情况。 That's not possible, a double only has 15 significant digits. Look for an implementation of a BigInt class. C specific is discussed here.
  • 是。 我想它应该如下 ((a%c - b%c) % c + c) % c 如果a = 12 , b = 7和c = 10那么(a%c - b%c)%c将给出-5然后再加c和mod再次得到5这就是正确答案 Yes. I guess it should be as follows ((a%c - b%c) % c + c) % c If a = 12, b = 7 and c = 10 then (a%c - b%c)%c will give -5 Then adding c and mod it again ...
  • 在javascript中,所有数字都是float因此n%1返回n/1余数,因此它返回n的小数部分,如n-floor(n)为正n 。 所以: if (n % 1 || n < 2) 应选择所有小数和小于2的所有整数(对于整数IsPrime方法,这些无效输入)。 in javascript all numbers are floats so n%1 returns remainder of n/1 so it returns the fractional part of n something like n- ...
  • 我不想用一些复杂的数学概念来打扰你,所以我会尽量保持简单。 当我们说a = b(mod c)时,我们只是说ab是c的倍数。 这意味着当我们想要知道mod c的值是什么时,说它是a或ac或+ c或a + 1000 * c是真的。 因此,您的2个公式是有效的。 但你想要的是知道计算机给你的答案,对吧? 嗯,这取决于您使用的语言。 例如,对于Java,mod b具有a的符号,并且具有严格低于b的绝对值。 这意味着a = 7,b = 3且N = 5,(ab)%N = 4,但是你的两个表达式将返回-1。 如果你想用模 ...
  • 将整数除以另一个整数时,它并不总是均匀分布。 例如, 23 / 7将给出2的余数,因为23 = 7 * 3 + 2 。 Modulo为您提供除法运算的剩余部分...... 23 % 7 = 2 。 如果您的天数超过一周的时间,则此功能非常有用。 您可以使用整数除法(意味着商将是一个整数)来计算周数23/7 23 / 7 = 3然后以模数计算剩余天数超过23 % 7 = 2 ,告诉您23天是相等的到3周和2天。 When you divide an integer by another integer, it ...
  • >>> int.from_bytes(b'hi', 'big', signed=False) % 3 2 >>> int.from_bytes(b'hi', 'big', signed=False) % 3 2
  • AND只有在你感兴趣的剩余部分来自于2的权力时才有效。你可以做的一件事就是使用一个这样的值而不是100。 另一种方法就是使用余数定理: a % 100 = a - (100 * int(a/100)) 这也是gcc所做的事情(虽然它避免实际上被称为倒数乘法的东西除以 100;如果你的ARM支持整数除法指令,那么,你很幸运 )。 ANDs only work if the remainder you are interested in comes from the division with a power ...
  • 你已经改变了这个条件。 for循环的中间部分告诉你循环必须是什么才能继续。 您的第二个版本使用相同的条件来决定何时停止。 for (A; B; C) { ... } 可以(大部分)重写为 A; while (B) { ... C; } (不同之处在于for循环中的continue仍然会执行C部分。) 最初你的number是3.然后我们做相当于while (number % 7 == 0) { ... } ,但是那个条件失败( 3 % 7是3,而不是0),所以循环永远不会运行。 你可能想要 ...