#include <stdio.h>
#include <wchar.h>
int main()
{
double f = 1717.1800000000001;
wprintf(L"double %.20G\n", f);
return 0;
}
输出(预期如下):
double 1717.1800000000000637
double 1717.1800000000001
这是在 Ubuntu 11.10 x64 上(但也在为 32 位编译时)。
我试图解决的问题是,在 Windows 上,它输出的数字与代码中的数字完全相同,我需要进行低级格式化 (swprintf) 才能像在 Windows 中一样工作,以解决可移植性问题。