【发布时间】:2009-12-28 23:15:29
【问题描述】:
Math.IEEERemainder(x,y) 在 C++ 中代表什么?
【问题讨论】:
标签: c++
Math.IEEERemainder(x,y) 在 C++ 中代表什么?
【问题讨论】:
标签: c++
试试fmod 函数。
【讨论】:
Remainder表达的功能比fmod好得多。编辑:迈克尔的忍者。
fmod 是具有不同数值属性和应用的不同函数。在不解释差异的情况下指出它是不够的(无论如何我们现在有std::remainder)。
在 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,你可以定义你自己的函数)
【讨论】:
虽然标记为答案,但SLak的答案并不正确。
是的,两者都计算模数,但它们在处理符号的方式上有所不同。 (即 John Feminella 是正确的)。可以在此处找到实现(以及指向 MSDN 文档的链接):
Is Math.IEEERemainder(x,y) equivalent to x%y?
请注意,IEEERemainder() 函数以 IEEE 标准方式实现模数 - 而不是 K&R 在 70 年代初所想的。
【讨论】: