%Lf を使用して印刷すると、大きな double 値が変更されます 次の組み合わせまでの値は、10 進数の前に 9 桁 / 10 進数の後に 6 桁の適切な結果をもたらします。
10 進数の前の桁数を 10 に増やすと、%Lf で出力された値にガベージ値が追加されます。たとえば、%Lf で出力される小数点以下 10 桁の値 入力: 34355372871.3487 出力: 34355372871.348701 上記の出力からわかるように、入力値が変更されています。
値が変更されないように使用できる g++/xlc++ のコンパイル時オプションはありますか?
::コードスニペット::
double d2 = 34355372871.3487;
double d4 = 3435537287.3487;
printf("d2 = %lf\n", d2);
printf("d4 = %lf\n", d4);
ありがとう、ハドソン