ホームページ  >  記事  >  バックエンド開発  >  `std::cout.precision()` が浮動小数点数の末尾のゼロを表示しないのはなぜですか?

`std::cout.precision()` が浮動小数点数の末尾のゼロを表示しないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-08 21:14:01545ブラウズ

Why Does  `std::cout.precision()` Not Display Trailing Zeros for Floating-Point Numbers?

std::cout.precision() と末尾のゼロ

std::cout.precision() の正しい使用法を理解することが重要です浮動小数点数を表示する場合。この記事では、予期しない動作を解決するための具体的な例を検討します。

初期コードと問題

次のコードを考えて、結果を表示しようとします。 2 つの整数を浮動小数点数として除算:

#include <iostream>
#include <stdlib.h>

int main() {
  int a = 5;
  int b = 10;
  std::cout.precision(4);
  std::cout << (float)a / (float)b << "\n";
  return 0;
}

このコードでは 0.5000 が表示されると予想されますが、代わりに、0.5 が出力されます。この不一致は、元のデータ型が整数であるという性質により発生します。

解決策: std::fixed Manipulator

浮動小数点数の末尾のゼロを表示するには、次のようにします。 std::fixed マニピュレータを std::cout に渡す必要があります。このマニピュレータにより、10 進表現で末尾のゼロが保持された固定小数点表記が使用されるようになります。

#include <iostream>
#include <stdlib.h>
#include <iomanip>

int main() {
  int a = 5;
  int b = 10;
  std::cout << std::fixed;
  std::cout << std::setprecision(4);
  std::cout << (float)a / (float)b << "\n";
  return 0;
}

std::fixed マニピュレータを使用すると、コードは 0.5000 を正しく出力するようになりました。 std::setprecision() マニピュレータは引き続き、必要な小数点以下の桁数を指定します。

以上が`std::cout.precision()` が浮動小数点数の末尾のゼロを表示しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。