次のようにprintf()
を使用して、小数点以下2桁まで数値を書き込もうとしています。
#include <cstdio>
int main()
{
printf("When this number: %d is assigned to 2 dp, it will be: 2%f ", 94.9456, 94.9456);
return 0;
}
プログラムを実行すると、次の出力が得られます。
# ./printf
When this number: -1243822529 is assigned to 2 db, it will be: 2-0.000000
何故ですか?
ありがとう。
必要なのは、%.2f
ではなく、2%f
です。
また、%d
を%f
に置き換えることもできます;)
#include <cstdio>
int main()
{
printf("When this number: %f is assigned to 2 dp, it will be: %.2f ", 94.9456, 94.9456);
return 0;
}
これは出力されます:
この番号:94.945600が2 dpに割り当てられると、94.95になります。
Printfフォーマットオプションの詳細については、こちらを参照してください。 printf
使用:"%.2f"
またはそのバリエーション。
printf()
形式文字列の正式な仕様については、 POSIX 仕様を参照してください。コアC99仕様からPOSIXエクストラを分離していることに注意してください。 Google検索に表示されるC++サイトはいくつかありますが、SOの他の場所で見られるコメントから判断すると、少なくとも疑わしい評判があるサイトもあります。
C++でコーディングしているので、おそらくprintf()
とその親類を避けるべきです。
%d
部分についてはこれを参照してください このプログラムはどのように機能しますか? および小数点以下の桁には%.2f
を使用します