ホームページ >バックエンド開発 >C++ >C で `pow(5, 2)` が 24 を返すのはなぜですか: データ型の問題ですか?

C で `pow(5, 2)` が 24 を返すのはなぜですか: データ型の問題ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-06 12:03:12537ブラウズ

Why Does `pow(5, 2)` Return 24 in C  : A Data Type Issue?

pow(5, 2) が 24 を返す理由: データ型と丸めの問題

提供されている C プログラムでは、pow( ) 関数は、数値の累乗を計算するために使用されます。ただし、pow(5, 2) が実行されると、プログラムは正しい結果 25 ではなく、予期せず 24 を返します。これにより、プログラマは、なぜ関数が誤動作しているように見えるのか困惑する可能性があります。

のルートこの問題は、pow() 関数内のデータ型の処理にあります。デフォルトでは、pow() は 10 進数値を保持できる倍精度浮動小数点数を返します。ただし、プログラムはこの double を整数変数に割り当て、事実上小数部分を切り捨てます。 5^2 の場合、実際の結果は 24.99997 または同様ですが、切り捨てにより 24 に切り捨てられます。

この問題を解決して正しい整数の結果を取得するには、pow を明示的に四捨五入する必要があります。 () 値を最も近い整数に変換します。これは、整変数に代入する前に結果に 0.5 を加算することで実現できます。次のコード スニペットは修正を示しています。

int answer;
answer = pow(number1, number2) + 0.5;

0.5 を追加することで、効果的に double を最も近い整数に丸め、5^2 の結果が期待どおり 25 になるようにします。

この丸め手法は、電力計算の結果が整数であることが保証されている場合にのみ適していることに注意することが重要です。結果が非整数 (平方根など) になる可能性がある状況では、小数値を保持するために pow() の結果を double または float 変数に代入することをお勧めします。

以上がC で `pow(5, 2)` が 24 を返すのはなぜですか: データ型の問題ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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