Doubles Beschneiden...
-
Hi,
würde gerne doubles nach einer bestimmten Anzahl von Nachkommastellen einfach abschneiden.
Hab's gemacht, wie hier beschrieben:
http://www.c-plusplus.net/forum/viewtopic.php?t=63676&highlight=float
nur leider funkt das ganze ned so rechtBsp:
wenn ich hab "2629.93" und ich wende die dorten beschriebene Methode an,
dann wird "2629.92" ausgespuckt... (hier halt nicht mal/durch 10, sondern 100)hab jetzt folgendes versucht:
#include <math.h> . . double doubleValue = 2629.93; int X = ( (int)fabs(doubleValue * 1000) ) /10; cout<< X / 100.0;
scheint zumindest mit meinen paar Testwerten zu funktionieren.
Aber wie schaut's da allgemein aus?danke
Martin
-
double z = 123.4567; double z2 = (int) (z* 100) / 100.0; //schneidet nach 2 NKS ab double z3 = (int) (z*1000) / 1000.0; //schneidet nach 3 NKS ab ...
-
naja,
meistens...
wenn aber Ausgangswerte dabei sind, die sowieso nur 2 Nachkommastellen haben,
dann funktioniert's irgendwie ned so recht:double doubleValue=2629.93; int X; X= (unsigned int) (doubleValue * 100); cout<<X / 100.0<<endl; // Ausgabe: 2629.92 -> um 0.01 zu klein X = ( (unsigned int)fabs(doubleValue * 1000) ) /10; cout<<X / 100.0<<endl; // Ausgabe: 2629.93 -> passt, aber für doubleValue > 10000 geht's auch hier nimma
aber trotzdem danke
PS:
hab's grad auch noch mit normalen int's ausprobiert, aber gleiches Ergebnis
-
So ein Müll,
Histell grad fest, dass die Ausgabe Compilerabhängig is.
Borland:
2629.92 2629.93
Digital Mars (http://www.digitalmars.com/)
und g++2629.92 2629.92
VC++ 6 macht's richtig
2629.93 2629.93
Was soll ich etz machen?