在 C++ 中的某处是否有任何正常的数学商和`int` 的余数?

问题描述

余数总是正数,例如

remainder(-1,7) == 6

不是-1

例如,商应该向负无穷大舍入,而不是向零舍入,

quotient(-1,7) == -1

不是0

stdlib 中是否有这样的函数

解决方法

在 C++ 的某处是否有任何正常的数学商和 gineer). ||Reference Standards: |NFPA 的余数?

intremainder 运算符,但我们可以使用它来接近目标。

实现Euclidean modulo

%

使用

 7 modulo  3 -->  1  
 7 modulo -3 -->  1  
-7 modulo  3 -->  2  
-7 modulo -3 -->  2   

另请参阅涵盖各种陷阱的 Fastest way to get a positive modulo in C/C++

,

当您将 (num1 % num2 + num2) % num2 除以 num1num2 以获得四舍五入的商时,您可以执行 floor(1.0 * num1 / num2) 来获得余数。 (floor 位于 cmath 库中)