C で pow(10,5) が 9,999 に等しいのはなぜですか?
累乗演算を計算するために C で pow 関数を呼び出すとき、戻り値は浮動小数点精度を持つ可能性があります。ただし、場合によっては、整数変数に代入すると結果が切り捨てられることがあります。
以下の例では、
const int sections = 10; for(int t= 0; t < 5; t++){ int i = pow(sections, 5- t -1); cout << i << endl; }
pow(sections, 5- t - 1) 整数セクションを使用し、整数の減算を行うと、整数値が得られます。これらの値を使用して累乗を計算すると、結果は小数部を含む浮動小数点値になる可能性があります。
この浮動小数点値を整変数 i に代入すると、切り捨てがトリガーされます。たとえば、pow(sections, 5- t -1) が 9999.9999 と評価される場合、小数部分は破棄され、i = 9999 が残ります。
この問題を回避するには、関数 pow を直接使用できます。出力ステートメント内:
for(int t = 0; t < 5; t++){ cout << pow(sections,5-t-1) << endl; }
この場合、次の結果pow(sections,5-t-1) は中間整数変数を必要とせずに直接出力され、正しい値が表示されることが保証されます。
以上がC で `pow(10,5)` が 10000 ではなく 9999 を返す場合があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。