标签: modulus

在PHP中查找数字的倍数

我想在PHP中找到所有多个数字.

我正在使用这样的东西

if($count != 20 )
Run Code Online (Sandbox Code Playgroud)

计算如果$count不等于20.

但我也需要这个脚本来检查是否$count不等于20,40,60,80,100,120,140,​​160等.

有任何想法吗?我想我需要使用模数符号(%),但我不知道.

php division modulus

27
推荐指数
4
解决办法
4万
查看次数

divmod()比使用%和//运算符更快吗?

我从汇编中记得整数除法指令同时产生商和余数.因此,在python中,内置的divmod()函数比使用%和//运算符更好地表现性能(假设当然需要商和余数)?

q, r = divmod(n, d)
q, r = (n // d, n % d)
Run Code Online (Sandbox Code Playgroud)

python performance division modulus divmod

25
推荐指数
2
解决办法
7942
查看次数

我如何划分所以我得到一个十进制值?

我想知道如何在Java中获得单值的余数和商.

例:

3/2我应该得到1.5的价值.

如果我使用/运算符,我只得到商.如果我使用%操作员,我只得到余数.如何在同一个变量中同时获得两者?

java math division modulus

23
推荐指数
4
解决办法
12万
查看次数

swift 3中的模数运算符(%)是多少?

我有这条线:

randomIndex = Int(drand48() % Double(alphabetColors.count))
Run Code Online (Sandbox Code Playgroud)

而Xcode 8(Swift 3)告诉我:

'%' is unavailable: Use truncatingRemainder instead
Run Code Online (Sandbox Code Playgroud)

还没有操作员吗?我该如何转换代码?

modulus swift3

23
推荐指数
4
解决办法
3万
查看次数

Why doesn't a negative number modulo a vector size give a negative number?

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
  vector<int> v = {1, 2, 3, 4, 5, 6, 7};
  int i = -4;

  cout << i << endl;
  cout << v.size() << endl;
  cout << i % v.size() << endl;
  cout << -4 % 7 << endl;
}
Run Code Online (Sandbox Code Playgroud)

The above code prints:

-4
7
5
-4
Run Code Online (Sandbox Code Playgroud)

Can someone please explain why i % v.size() prints 5 instead of -4? I'm guessing it has something to do …

c++ integer-promotion modulus

23
推荐指数
3
解决办法
1146
查看次数

为什么operator%被称为"模数"运算符而不是"余数"运算符?

今天上班时我与我的一位同事进行了一次有趣的讨论.当他遇到以下情况时,他感到很惊讶:

assert(-1 % 10 == -1)  //Expecting 9
Run Code Online (Sandbox Code Playgroud)

因此,当他来问我这件事,我告诉他,"好了,这是有道理的.当你把-1 10,你跟-1剩余得到0.然而,他的论点是,模运算应该秉承"总是积极的"模型.我做了一点研究,发现他所指的模数看起来像这样:

设q是a和n的整数商.设r为余数.然后:

a = n*q + r

然而,使用的定义似乎是模数的Knuth版本,它是:

设q是除以n的底数.设r为余数.然后:

r = a - n*q

所以,我的问题是为什么它最终在FORTRAN标准(以及随后的C标准)中使模数运算符截断为0?把它称为"模数"而不是"余数"似乎是一种误称(在数学中,答案应该是9).这与硬件如何进行划分有关吗?

以供参考:

TLDR; 硬件是模数运算符向0截断的原因吗?

c++ standards operators modulus

22
推荐指数
2
解决办法
6005
查看次数

为什么编译器会评估与运行时不同的余数MinValue%-1?

我认为这看起来像C#编译器中的一个错误.

考虑这段代码(在方法内):

const long dividend = long.MinValue;
const long divisor = -1L;
Console.WriteLine(dividend % divisor);
Run Code Online (Sandbox Code Playgroud)

它编译时没有错误(或警告).好像是一个bug.运行时,0在控制台上打印.

然后没有const,代码:

long dividend = long.MinValue;
long divisor = -1L;
Console.WriteLine(dividend % divisor);
Run Code Online (Sandbox Code Playgroud)

当它运行时,它正确地导致OverflowException被抛出.

C#语言规范专门提到了这个案例,并说System.OverflowException将抛出一个.它不依赖于上下文checkedunchecked似乎(也是与余数运算符的编译时常量操作数的错误与checked和相同unchecked).

int(System.Int32),而不仅仅是long(System.Int64)发生同样的错误.

相比之下,编译器处理dividend / divisorconst操作数比要好得多dividend % divisor.

我的问题:

我是对的,这是一个错误吗?如果是,它是一个众所周知的错误,他们不希望修复(因为向后兼容性,即使使用% -1编译时常量相当愚蠢-1)?或者我们应该报告它,以便他们可以在即将推出的C#编译器版本中修复它?

c# operators overflowexception compiler-bug modulus

22
推荐指数
1
解决办法
538
查看次数

C#模数运算符

我可以写程序

int a = 3;
int b = 4;

Console.WriteLine(a % b);
Run Code Online (Sandbox Code Playgroud)

我得到的答案是3. 3 mod 4 = 3怎么样?

我无法弄清楚这是如何以这种方式计算的.

c# modulus

21
推荐指数
4
解决办法
7万
查看次数

C中的模运算有哪些规则?

在早期的课程中,我被教导n % d = r并将其视为n = d*q + r,d除数在哪里,q是商,并且r是余数(注意其余部分永远不会是负数).

因此,例如,-111 mod 1110,因为-111 = -11*-11 + 10(相反-111 = -11*10 -1,看到这将如何给我们一个负余数).

但是,打印结果时-111 % 11,-1结果并非如此10.为什么?这在技术上是不是错了?

c modulus

21
推荐指数
2
解决办法
8838
查看次数

C/C#的模量越快?

对于特定碱基,是否有创建比标准%运算符更快的整数模数的技巧?

对于我的程序,我会寻找大约1000-4000(例如n%2048).有没有以执行N模量2048不仅仅是一个更快的方法:n%2048

c# math optimization modulus

20
推荐指数
2
解决办法
1万
查看次数