jjzjj

php - 使用模数除以零误差

模数运算符应该显示余数。比如echo(34%100)输出34。但是为什么我会收到此代码echo(34%4294967296)的“Divisionbyzero”错误 最佳答案 4294967296是2^32并且不能表示为32位数字-它返回到0。如果您使用64位版本的PHP,它可能会工作.您可以使用浮点模数fmod得到你想要的而不会溢出。 关于php-使用模数除以零误差,我们在StackOverflow上找到一个类似的问题: https://stackoverfl

php - PHP 循环中的模数

我目前正在使用以下代码检查循环中的条目是否是第三次迭代:">media/uploads/news/"alt="ImagePreview"width="70px"height="70px"/>'forward'));?>如何检查循环是否处于第二次而不是第三次迭代?我试过$i%2==1但没有成功。 最佳答案 模数检查除法的剩余部分。如果$i为10,则10/2=5且没有剩余,因此$i模数2将为0。如果$i为10,则10/3=3剩余为1,因此$i模数3将为1。为了让您更容易跟踪项目的数量,我将从1而不是0开始$i。例如for($i=1;$i

C++ 快速除法/模数 10^x

在我的程序中,我使用了很多整数除以10^x和10次幂的整数mod函数。例如:unsigned__int64a=12345;a=a/100;....或:unsigned__int64a=12345;a=a%1000;....如果我要使用正确的位移>>,那么我会得到2^x的模式,这不是我想要的。有什么方法可以加快整数除法和mod函数的程序? 最佳答案 简短回答:否长答案:没有。说明:编译器已经在为你优化这样的语句了。如果有一种技术可以比整数除法更快地实现这一点,那么编译器已经知道它并将应用它(假设你打开了优化)。如果您还提供了适当的体系

java - Java中的模数慢吗?

出于好奇,我一直在查看ThreadLocal在JDK中的实现,我发现了这个:/***Incrementimodulolen.*/privatestaticintnextIndex(inti,intlen){return((i+1很明显,这可以通过一个简单的return(i+1)%len来实现,但我认为这些人知道他们的东西。知道他们为什么这样做吗?这段代码高度面向性能,有一个自定义映射来保存线程本地映射,弱引用帮助GC变得聪明等等,所以我猜这是一个性能问题。Java中的模运算速度慢吗? 最佳答案 %在此示例中出于性能原因而被避免。di

java - 如何将模数用于浮点/ double ?

我正在为一个学校项目创建一个RPN计算器,但在使用模数运算符时遇到了问题。由于我们使用的是double据类型,因此模数不适用于float。例如,0.5%0.3应该返回0.2,但我得到了除以零的异常。指令说要使用fmod()。我到处寻找fmod(),包括javadoc,但我找不到。我开始认为这是我必须创建的一种方法?编辑:嗯,奇怪。我刚刚再次插入这些数字,它似乎工作正常……但以防万一。在使用浮点类型时,我是否需要注意在Java中使用mod运算符?我知道这样的事情不能在C++中完成(我认为)。 最佳答案 您第一次运行它时可能有错字。评估

java - C中的Python样式整数除法和模数

在Python和Ruby中,有符号整数除法向负无穷大截断,有符号整数模数与第二个操作数的符号相同:>>>(-41)/3-14>>>(-41)%31但是,在C和Java中,有符号整数除法会向0截断,并且有符号整数模与第一个操作数具有相同的符号:printf("%d\n",(-41)/3);/*prints"-13"*/printf("%d\n",(-41)%3);/*prints"-2"*/在C中执行与Python和Ruby中相同的除法和模数的最简单和最有效的方法是什么? 最佳答案 旧的C标准中没有指定带符号整数除法的舍入方向。但是,

c++ - 无符号模数 : alternative approach?

我需要优化这个非常小但令人讨厌的功能。unsignedumod(inta,unsignedb){while(a在你喊出“你不需要优化它”之前,请记住,这个函数在整个程序生命周期中被调用了50%,因为对于最小的测试用例基准,它被调用了21495808次。该函数已被编译器内联,因此请不要添加inline关键字。 最佳答案 这样可以避免循环:inttmp=a%b;if(tmp注意a和b都需要签名。 关于c++-无符号模数:alternativeapproach?,我们在StackOverflo

java - java如何用负数进行模数计算?

我做模数错了吗?因为在Java中-13%64的计算结果为-13但我想得到51。 最佳答案 负数模数的两种定义都在使用-一些语言使用一种定义,而另一些则使用另一种。如果你想为负输入得到一个负数,那么你可以使用这个:intr=x%n;if(r>0&&x同样,如果您使用的语言在负输入上返回负数并且您更喜欢正数:intr=x%n;if(r 关于java-java如何用负数进行模数计算?,我们在StackOverflow上找到一个类似的问题: https://stack

java - 使Java的模数表现得像负数一样的最佳方法?

在java中当你这样做a%b如果a是负数,它将返回一个负数结果,而不是像它应该的那样环绕到b。解决此问题的最佳方法是什么?我能想到的唯一方法是a 最佳答案 它的行为应该是a%b=a-a/b*b;即是余数。你可以做(a%b+b)%b这个表达式是(a%b)的结果。必然低于b,不管a是正面的还是负面的。添加b处理a的负值,自(a%b)是-b之间的负值和0,(a%b+b)必然低于b和积极的。最后一个模数在a的情况下。一开始是积极的,因为如果a为正(a%b+b)将大于b.因此,(a%b+b)%b将其变为小于b再次(并且不影响负a值)。

c++ - 为什么模数除法 (%) 仅适用于整数?

我最近遇到了anissue这可以使用模除法轻松解决,但输入是float:Givenaperiodicfunction(e.g.sin)andacomputerfunctionthatcanonlycomputeitwithintheperiodrange(e.g.[-π,π]),makeafunctionthatcanhandleanyinput.“显而易见”的解决方案类似于:#includefloatsin(floatx){returnlimited_sin((x+M_PI)%(2*M_PI)-M_PI);}为什么这不起作用?我收到此错误:error:invalidoperandso