ホームページ > バックエンド開発 > C++ > Double を使用すると、C の整数除算で予期しない結果が 0 になるのはなぜですか?

Double を使用すると、C の整数除算で予期しない結果が 0 になるのはなぜですか?

Linda Hamilton
リリース: 2024-12-02 05:46:12
オリジナル
311 人が閲覧しました

Why Does Integer Division in C   Produce Unexpected Zero Results When Using Doubles?

除算結果の混乱: Double として保存されているにもかかわらず 3/5 がゼロになるのはなぜですか?

除算 (/) を実行しようとしたときC では、関係するデータ型を理解することが重要です。整数 (int 型) の除算は、小数部分を切り捨てる整数除算になります。ただし、double を扱う場合、予期しない結果が生じる可能性があります。

例:

次のコードを考えてみましょう:

#include <iostream>

int main() {
  double f = 3 / 5;
  std::cout << f;
  return 0;
}
ログイン後にコピー

予期しない出力:

多くの人が驚いたことに、このコードは次のように出力します。予想される 0.6 ではなく 0 です。

説明:

3 と 5 は両方とも整数であるため、除算演算子 (/) は整数の除算を実行します。これを修正するには、1 つのオペランドが実数であることを確認します。これは、次の修正バージョンに見られるように、小数点を追加することで実現できます。

double f = 3.0 / 5;
ログイン後にコピー

この修正により、コンパイラは浮動小数点除算を実行するようになり、正しく結果は 0.6.

になります。 結論:

double を使用して除算を実行する場合、関係するデータ型を考慮することが不可欠です。浮動小数点オペランドを使用すると、結果の小数部分が確実に保持され、望ましい結果が得られます。

以上がDouble を使用すると、C の整数除算で予期しない結果が 0 になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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