我在基于UNIX系统上使用sprintf时遇到问题,它无法正确地四舍五入值。
例如
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
为什么会发生这种情况?有任何想法,如何使它在Windows / Unix上的行为相同
谢谢
.88
,我的本地SuseLinux也报告相同的结果... - Nim000088888888888885.88
。 - Charles Salvia