変数double MyDouble;
を宣言します。printfは末尾のゼロを二重にしません
MyDouble = 1000.0/3.0;
を設定してから printf("%g", MyDouble);
に設定すると、精度が失われるため、333.333となります。
printf("%lf", MyDouble);
を使用すると精度が得られます。
ここでは、MyDouble = 5.0/2.0;
を設定し、printf("%lf", MyDouble);
を使用すると、2.500000となり、末尾のゼロが得られます。
一般的なケースとして、どのように末尾のゼロを持たない精度を持つことができますか。私はsnprintf
と%lf
のフォーマットを使用して文字列にダブルを書いて、後ろのゼロを取り除くサブルーチンを書くことができますが、より簡単な方法が必要です。
リンクはstd ::する書式指定子を含むprintfのドキュメントを:http://en.cppreference.com/w/cpp/io/c/fprintf –
あなたが欲しいのいずれかくらいの精度かドンこと't。 –
'l'長さ修飾子は' f'指定子には影響しません。 – jxh