#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
これはUbuntu11.10x64にあります(ただし、32ビット用にコンパイルする場合も同様です)。
私が解決しようとしている問題は、Windowsではコードとまったく同じように数値が出力されることです。移植性の問題のために、Windowsと同じように機能するように低レベルの書式設定(swprintf)を作成する必要があります。