double値を指数に変換しようとしていますが、丸め誤差が発生します。
int main (unsigned int argc, char **argv)
{
float a=293.17;
float b=293.10;
double ULfreq = 2089.555000;
double upfreq = 0.0;
long int t = 0;
long int u = 0;
upfreq = ULfreq * 1000000.0;
printf(" %f, upfreq:%22.16E\n", upfreq, upfreq);
return 0;
}
このコードを32ビットコンピューターで実行すると、次の結果が得られます。
2089555000.000000, upfreq:2.0895549999999998E+09
64ビットで実行すると正しい答えが得られます。
この変換を32ビットサーバーで機能させることは可能ですか?