web-dev-qa-db-ja.com

printf()を使用した小数点以下2桁

次のように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

何故ですか?

ありがとう。

56
aali

必要なのは、%.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

119
badgerr

使用:"%.2f"またはそのバリエーション。

printf()形式文字列の正式な仕様については、 POSIX 仕様を参照してください。コアC99仕様からPOSIXエクストラを分離していることに注意してください。 Google検索に表示されるC++サイトはいくつかありますが、SOの他の場所で見られるコメントから判断すると、少なくとも疑わしい評判があるサイトもあります。

C++でコーディングしているので、おそらくprintf()とその親類を避けるべきです。

6

%d部分についてはこれを参照してください このプログラムはどのように機能しますか? および小数点以下の桁には%.2fを使用します

4
Rozuur