Fehler beim runden?
-
Hi Ihrs,
ich möcht nen double splitten also in den Teil vor und nach dem Komma weil ich das zu rechnen brauche nun tritt aber bei manchen Eingaben ein Rundungsfehler auf und ich kann mir das einfach nich erklären.
Hat vielleicht einer ne idee?
Ich dacht mir das so ↓
vector<int> Rechnen::split_double(double e)
{
vector<int> res(2);
res[0]=(int)e;double tmp2=e-(double)res[0];
res[1]=(tmp2<.5)?floor(tmp2*100.0):ceil(tmp2*100.0);
cout<<res[0]<<"\t"<<res[1]<<"\n\n";
return res;
}
-
-
nebelkind schrieb:
ich möcht nen double splitten also in den Teil vor und nach dem Komma weil ich das zu rechnen brauche
Was spricht den gegen???
#include <cmath> double modf(double, double *);
Gruß Wolle
-
ja aber ich brauch die werte zum schluss als int nich als double
-
nebelkind schrieb:
vector<int> Rechnen::split_double(double e) { vector<int> res(2); res[0]=(int)e; double tmp2=e-(double)res[0]; res[1]=(tmp2<.5)?floor(tmp2*100.0):ceil(tmp2*100.0); cout<<res[0]<<"\t"<<res[1]<<"\n\n"; return res; }
Also ich entnehme deinem Code das du nur die 2 letzten stellen benötigst, wie wäre es dann so:
void Rechnen::split_double(double e, int &num, int &dec_pl) { num = static_cast<int>(e); double tmp = (e < 0) ? num - e : e - num; tmp *= 100.0; dec_pl = static_cast<int>(tmp + 0.5); }
Gruß Wolle
-
hi ihr
DANKE DANKE DANKE für die hilfe es läuft!!!!!!!!!!!!!