C ++中代表 Math.IEEERemainder(x,y)的是什么?
答案 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
计算浮点除法运算的
的IEEE余数x/y
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年代早期的想法。