011
06.09.2003, 17:02 Uhr
BeS
|
Hallo 0xdeadbeef,
Zitat: |
0xdeadbeef postete Oh. *ähem* In dem Fall:
C++: |
double wert = 1.38; printf("%.1lf\n", wert);
|
|
hiermit wird aber auch aufgerundet, d.h. aus 1.38 wird 1.4!
Mir ist aber beim rumspielen noch was ganz anderes aufgefallen. Ich habe ein paar Zahlen mit diesem kleinen Testprogramm getestet:
C++: |
#include <stdio.h>
double round (double x) { return ((int) (x * 10 + 0.5L)) / 10.0L; }
int main() { double zahl = 1.35; printf("mit Funktion %lf\n", round(zahl)); printf("ohne Funktion %.1lf\n\n", zahl); return 0; }
|
Die Ausgabe: mit Funktion 1.400000 ohne Funktion 1.4
Wenn ich jetzt die Zahl in 1.45 ändere bekomme ich die gleiche Ausgabe! Bei 1.55 wird dann wieder auf 1.6 aufgerundet und bei 1.65 wird wieder auf 1.6 abgerundet!!!
Kann sich das jemand erklären...
PS: Deine Funktion sollte doch eigentlich immer aufrunden, oder? Also wenn ich z.B. 1.32 haben: 1.32 * 10 = 13.2; 13.2 + 0.5 = 13.7 -> (int) 14; 14/10.0 = 1.4 Die Funktion rundet bei mir aber ganz normal, wie es %.1f auch macht... -- If art interprets our dreams, the computer execute them in the guise of programs! Dieser Post wurde am 06.09.2003 um 17:02 Uhr von BeS editiert. |