C++ 函数'remainder' 和'fmod' 之间的区别?

may*_*war 6 c++ c++11

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

但我也看到有一些 C++“剩余”函数可以完成几乎相同的工作。

这两个函数有什么区别?

Aru*_*mar 7

remainder()C++ 中的函数计算分子/分母的浮点余数(四舍五入到最接近)。

remainder (x, y) = x - rquote * y

其中 rquote 是 x/y 的结果,向最接近的整数值四舍五入(中间情况向偶数四舍五入)。

另一方面,fmod()C++ 中的函数计算分子/分母的浮点余数(向零舍入)。

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
Run Code Online (Sandbox Code Playgroud)


Gre*_*ill 5

来自http://en.cppreference.com/w/cpp/numeric/math/remainder

相反std::fmod(),不保证返回的值与 具有相同的符号x