ホームページ > バックエンド開発 > C++ > C の整数除算を double 変数に格納すると結果がゼロになるのはなぜですか?

C の整数除算を double 変数に格納すると結果がゼロになるのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-03 11:35:10
オリジナル
1036 人が閲覧しました

Why Does Integer Division in C   Result in Zero When Stored in a Double Variable?

倍精度変数で整数の除算が驚くべきゼロを生成する

単純な除算 (3/5) を計算しようとすると、予期しない結果が発生する可能性があります。結果を倍精度変数に格納しているにもかかわらず、結果が不規則にゼロとして表示される場合があります。この謎を解明するために、基礎となるメカニズムを調べてみましょう:

提供されたコード スニペットでは、被除数 (3) と除数 (5) は両方とも整数です。デフォルトでは、C はこの除算を整数の除算として解釈し、結果を切り捨てて小数部分を切り捨てます。この場合、整数の除算で予想されるように、3 を 5 で割ると 0 が得られます。

この問題を修正して目的の浮動小数点除算を行うには、オペランドの少なくとも 1 つが次のように表されることを確認する必要があります。実数。これは、除数または被除数に「.0」を追加することで実現できます。

double f = 3.0 / 5;  // Explicitly making the dividend a real number

// or

double f = 3 / 5.0;  // Explicitly making the divisor a real number
ログイン後にコピー

オペランドの 1 つを実数に変換することで、コンパイラに浮動小数点除算を強制的に実行させます。これにより、小数部分が確実に保持され、正しい結果 (この場合は 0.6) が f 変数に格納されます。

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

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