我在基於UNIX的系統上遇到問題,sprintf沒有正確收集值。sprintf中Windows與基於Unix的系統的舍入差異
例如
double tmp = 88888888888885.875
char out[512];
那88,888,888,888,885.875只是爲了眼睛更容易。 我給出了這樣一個特定的大例子,因爲它似乎在較小的數字上工作正常。
我想在下面的方式
sprintf(out, "%021.2f", tmp);
printf("out = %s\n", tmp);
在Windows上,導致使用它:
out = 000088888888888885.88
在例如AIX,但顯示了在Linux和:
out = 000088888888888885.87
這是怎麼發生的? 任何想法,以及如何使其行爲同樣的方式在Win/Unix的
感謝
erm,http://www.ideone.com/UVtft報告`.88`,我本地的SuseLinux報告一樣... – Nim 2011-01-10 17:29:34
你在每個操作系統上使用了哪些CPU? – chrisaycock 2011-01-10 17:33:01
在Linux(Debian 5)AMD64上,我得到`000088888888888885.88` – 2011-01-10 17:41:18