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 サイトの他の関連記事を参照してください。