我在基于 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
为什么会这样?任何想法以及如何使其在 Win/Unix 上的行为方式相同
谢谢