私はC Primer Plusの本を読んでいて、この例にたどり着きました
#include <stdio.h>
int main(void)
{
float aboat = 32000.0;
double abet = 2.14e9;
long double dip = 5.32e-5;
printf("%f can be written %e\n", aboat, aboat);
printf("%f can be written %e\n", abet, abet);
printf("%f can be written %e\n", dip, dip);
return 0;
}
Macbook でこれを実行した後、次の出力に非常にショックを受けました。
32000.000000 can be written 3.200000e+04
2140000000.000000 can be written 2.140000e+09
2140000000.000000 can be written 2.140000e+09
そこで、よく調べてみると、long double を表示する正しい形式は を使用することであることがわかりました%Lf
。ただし、 Cygwin、Ubuntu、およびiDenebでabet
実行したときに取得した値ではなく、 double 値を取得した理由をまだ理解できません。
-1950228512509697486020297654959439872418023994430148306244153100897726713609
013030397828640261329800797420159101801613476402327600937901161313172717568.0
00000 can be written 2.725000e+02
何か案は?