Ich habe ein Problem auf UNIX-basierten Systemen sprintf nicht richtig aufrunden Wert.Rundungsdifferenzen auf Windows vs Unix-basierten System in sprintf
Zum Beispiel
double tmp = 88888888888885.875
char out[512];
Das ist 88,888,888,888,885.875 nur um leichter auf die Augen. Ich gebe solch ein spezifisches und großes Beispiel, weil es scheint, dass es bei kleineren Zahlen gut funktioniert.
Ich versuche, es zu benutzen, in folgender Weise
sprintf(out, "%021.2f", tmp);
printf("out = %s\n", tmp);
Auf Fenster ergibt sich:
out = 000088888888888885.88
On zum Beispiel AIX, zeigt aber in Linux auch:
out = 000088888888888885.87
Warum passiert das? Irgendwelche Ideen und wie sie gleiche Art und Weise auf Win/Unix verhalten machen
Dank
erm, http://www.ideone.com/UVtft meldet '.88', mein lokaler SuseLinux meldet das gleiche ... – Nim
Welche CPUs verwenden Sie für jedes Betriebssystem? – chrisaycock
Unter Linux (Debian 5) AMD64 bekomme ich '000088888888888885.88' –