#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 тот же langauge – amanuel2
Если это не отвечает на ваш вопрос самостоятельно, прочитайте документы. 'fmod' и' остаток' не делают то же самое, поэтому ожидаются разные результаты. –
@ amanuel2 u получить аналогичные результаты http://ideone.com/rLyS2t – umbersar