的考虑:输出FMOD功能C++
#include <iostream>
#include <cmath>
#include <limits>
using namespace std;
int main() {
// your code goes here
double h = .1;
double x = 1;
int nSteps = abs(x/h);
double rem = fmod(x, h);
cout<<"fmod output is "<<rem<<endl;
if(abs(rem)<std::numeric_limits<double>::epsilon())
cout<<"fmod output is almost near 0"<<endl;
rem = remainder(x,h);
cout<<"remainder output is "<<rem<<endl;
if(abs(rem)<std::numeric_limits<double>::epsilon())
cout<<"remainder output is almost near 0"<<endl;
return 0;
}
鉴于int(x/h) == 10
,我本来期望的fmod()
结果接近0,但我得到的是0.0999999999。这是一个重大的差异。余数()的结果仍然可以接受。代码可以尝试在http://ideone.com/9wBlva
为什么fmod()结果有显着差异?
C++和C Arent使用相同的语言 – amanuel2
如果这样不能自己回答您的问题,请阅读文档。 'fmod'和'remaining'不会做同样的事情,所以会有不同的结果。 –
@ amanuel2你得到了类似的结果http://ideone.com/rLyS2t – umbersar