Ho problemi con i sistemi basati su UNIX sprintf non arrotonda correttamente il valore.Differenze di arrotondamento su sistema basato su Windows vs Unix in sprintf
Per esempio
double tmp = 88888888888885.875
char out[512];
Quello 88,888,888,888,885.875 solo per essere più facile per gli occhi. Sto dando un esempio così specifico e grande perché sembra che funzioni bene su numeri più piccoli.
Sto cercando di usarlo in modo seguente
sprintf(out, "%021.2f", tmp);
printf("out = %s\n", tmp);
Su Windows questo implica che:
out = 000088888888888885.88
On per esempio AIX, ma mostra in Linux così:
out = 000088888888888885.87
Perché sta succedendo questo? Tutte le idee e come renderlo comportarsi allo stesso modo su Win/Unix
Grazie
erm, http://www.ideone.com/UVtft segnala ".88', il mio SuseLinux locale riporta lo stesso ... – Nim
Quali CPU stai usando per ogni SO? – chrisaycock
Su Linux (Debian 5) AMD64 Ottengo '000088888888888885.88' –