c ++函数'remaining'和'fmod'之间的区别?

时间:2014-09-08 22:40:04

标签: c++ c++11

最近我发现需要在C ++中使用fmod()函数来计算两个长双操作数的模数。

但我也看到C ++中有一些“余数”功能可以完成同样的工作。

这两个功能有什么区别?

3 个答案:

答案 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舍入到最接近的整数而不是零到整数"