C では、 pow(10, 5) を使用して 10 の 5 乗を計算できます。場合によっては、予期しない値 9,999 が発生することがあります。次のコード スニペットに示すように、この動作は一貫性がなく、混乱を招く可能性があります:
const int sections = 10; for (int t = 0; t < 5; t++) { int i = pow(sections, 5 - t - 1); cout << i << endl; }
このコードの期待される出力は [10000, 1000, 100, 10, 1] ですが、実際には[9999, 1000, 99, 10, 1].
この問題の原因は、 C の pow(10.0, 5) の浮動小数点表現にあります。この計算結果を倍精度浮動小数点変数に格納する場合、小数部分が含まれる場合があります。これを整数変数に代入すると、小数部分が切り捨てられるため、実際の答えよりわずかに小さい値が得られます。この場合、pow(10.0, 5) は内部的に 9999.9999999 として表される可能性がありますが、整数に割り当てられると 9999 に切り捨てられます。
この問題を回避するには、次の代替案:
以上がC で `pow(10, 5)` が 9999 を返す場合があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。