最近我发现需要在C ++中使用fmod()
函数来计算两个长双操作数的模数。
但我也看到C ++中有一些“余数”功能可以完成同样的工作。
这两个功能有什么区别?
答案 0 :(得分:3)
来自http://en.cppreference.com/w/cpp/numeric/math/remainder:
与
std::fmod()
相比,返回的值不能保证与x
具有相同的符号。
答案 1 :(得分:1)
C ++中的remainder()
函数计算分子/分母的浮点余数(四舍五入到最接近的值)。
remainder (x, y)
= x-rquote * y
其中rquote是x / y的结果,四舍五入到最接近的整数值(中途情况四舍五入到偶数)。
另一方面,C ++中的fmod()
函数计算分子/分母的浮点余数(四舍五入)。
fmod (x, y)
= x-tquote * y
将tquote截断,即x / y的结果(四舍五入为零)。
示例
double x = 7.5, y = 2.1;
double result = remainder(x, y);// output is -0.9
double result2 = fmod(x, y);// output is 1.2
答案 2 :(得分:0)
fmod计算为"这些函数通过分母计算分子除法的余数。具体来说,返回值是分子 - n *分母,其中n是分子除以分母的商,向零舍入为整数"
提醒计算为"这些函数类似于fmod,不同之处在于它们将内部商n舍入到最接近的整数而不是零到整数"