ホームページ > バックエンド開発 > C++ > C で `pow(10,5)` が 10000 ではなく 9999 を返す場合があるのはなぜですか?

C で `pow(10,5)` が 10000 ではなく 9999 を返す場合があるのはなぜですか?

Susan Sarandon
リリース: 2024-12-23 07:34:00
オリジナル
343 人が閲覧しました

Why Does `pow(10,5)` Sometimes Return 9999 Instead of 10000 in C  ?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート