什么代表C ++中的Math.IEEERemainder(x,y)?

时间:2009-12-28 23:15:29

标签: c++

C ++中代表 Math.IEEERemainder(x,y)的是什么?

3 个答案:

答案 0 :(得分:7)

尝试fmod功能。

答案 1 :(得分:3)

在C ++ 11标准库中,std::remainder(x,y)现在是C ++中C#的Math.IEEERemainder(x,y)的等效函数。

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

  

计算浮点除法运算的x/y

的IEEE余数

IEEE余数为x–(round(x/y)*y)

然而,fmod余数为x - trunc(x/y)*y,这可能导致不同的答案,例如此问题中提出的答案:Why am I getting a different result from std::fmod and std::remainder

如果您真的想获得IEEE定义的余数,则需要std::remainder(x,y)(或者如果您不能使用C ++ 11,则定义自己的函数)

答案 2 :(得分:2)

虽然标记为答案,但SLak的回答并不正确。

是的,都计算模数,但它们在如何处理标志方面有所不同。 (即John Feminella是正确的)。可以在此处找到实现(以及MSDN文档中的链接):

Is Math.IEEERemainder(x,y) equivalent to x%y?

请注意,IEEERemainder()函数以IEEE标准方式实现模数 - 而不是K& R在70年代早期的想法。