![](/img/trans.png)
[英]How do c++ evaluate the mathematical expressions involving modulus for double data type?
[英]How do I do modulus in C++?
如何在C ++中的两个整数之间执行mod操作?
在c ++中,使用%operator
正如其他答案所述,您可以使用C ++%运算符。 但请注意,还没有人提到过的皱纹:在表达式a % b
,如果a
是负数怎么办? 该操作的结果应该是正面的还是负面的? C ++标准将此归结为实现。 因此,如果您想要便携地处理负输入,您应该执行类似r = abs(a) % b
,然后修复r
的符号以符合您的要求。
像这样:x = y%z
C ++有%
运算符,偶尔会误导性地命名为“模数”运算符。 特别是STL在<functional>
头中具有modulus<>
仿<functional>
。 请注意,这不是数学模运算符,因为在模数算术中,根据定义, a mod b
对任何a
值和b
任何正值都评估为非负值。 在C ++中,如果任一参数为负,则a % b
结果的符号是实现定义的 。 因此,我们更适当地将%
运算符命名为余数运算符。
也就是说,如果你真的想要数学模数运算符,那么你可以定义一个函数来做到这一点:
template<typename V>
V mod(const V& a, const V& b)
{
return (a % b + b) % b;
}
只要b
是正值,对上述函数的调用将产生非负结果。
使用模数%
运算符:
int modulus_a_b = a % b;
如果你使用双变量,你应该使用;
double x;
double y;
double result = fmod(x, y);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.