末尾のゼロを表示するための std::cout.precision() の正しい使用法
C で浮動小数点数を扱う場合、 std::cout.precision() メソッドは、表示される小数点以下の桁数を制御するために重要です。ただし、場合によっては、末尾のゼロがないなど、予期しない結果が発生することがあります。
次のコードを考えてみましょう:
int main() { int a = 5; int b = 10; std::cout.precision(4); std::cout << (float)a / (float)b << "\n"; return 0; }
このコードは、2 つの整数を除算した結果を出力しようとします。 (5 および 10)、小数点以下 4 桁の精度。ただし、出力は予期された "0.5000" ではなく "0.5" です。
この動作の理由は、数値 'a' と 'b' が最初は整数として格納されているという事実にあります。除算を実行すると、デフォルトでは結果も整数になります。浮動小数点数を正しく表示するには、次の行に示すように、浮動小数点数を明示的に float にキャストする必要があります。
std::cout << (float)a / (float)b << "\n";
ただし、float にキャストした後でも、末尾のゼロがないままになります。ここで std::fixed マニピュレータが活躍します。末尾のゼロが表示されるようにするには、std::fixed マニピュレータを std::cout に渡す必要があります。このマニピュレータは浮動小数点値を丸め、固定小数点表記で表示します。
修正されたコードは次のとおりです。
int main() { int a = 5; int b = 10; std::cout << std::fixed; std::cout.precision(4); std::cout << (float)a / (float)b << "\n"; return 0; }
std::fixed を含めることで、出力が正しく表示されるようになりました。指定された小数点以下 4 桁の精度に従って、「0.5000」が表示されます。
以上がC の `std::cout.precision()` が浮動小数点数の末尾のゼロを表示しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。