gro*_*rtn 10 c c++ unix windows rounding-error
我在基于UNIX的系统上遇到问题sprintf没有正确地舍入值.
例如
double tmp = 88888888888885.875
char out[512];
Run Code Online (Sandbox Code Playgroud)
这是88,888,888,888,885.875只是为了让眼睛更容易.我给出了这样一个特别而又大的例子,因为它似乎在较小的数字上工作正常.
我试图以下面的方式使用它
sprintf(out, "%021.2f", tmp);
printf("out = %s\n", tmp);
Run Code Online (Sandbox Code Playgroud)
在Windows上,这会导致:
out = 000088888888888885.88
Run Code Online (Sandbox Code Playgroud)
例如AIX,但在Linux中也显示:
out = 000088888888888885.87
Run Code Online (Sandbox Code Playgroud)
为什么会这样?任何想法以及如何使它在Win/Unix上的行为方式相同
谢谢