ホームページ > データベース > mysql チュートリアル > 除算の計算で 10 進数値ではなくゼロが返されるのはなぜですか?

除算の計算で 10 進数値ではなくゼロが返されるのはなぜですか?

DDD
リリース: 2025-01-20 17:37:08
オリジナル
880 人が閲覧しました

Why Does My Division Calculation Return Zero Instead of a Decimal Value?

プログラミングにおける整数除算のゼロ結果のトラブルシューティング

プログラミングには数学的な演算が含まれることが多く、除算も例外ではありません。 ただし、予期しない結果が発生すると、問題が発生する可能性があります。この記事では、ゼロ以外の結果が予想される場合に除算演算がゼロを返すという一般的な問題に焦点を当てます。

変数 @set1@set2 に格納されている整数値を除算し、結果を @weight に保存することが目標であるシナリオを考えてみましょう。 コードは予期せず 0 を生成します。

根本原因は変数の性質にあります。@set1@set2 は両方とも整数です。 これは、整数の除算の重要な概念を示しています。

整数の除算は、浮動小数点の除算とは異なり、2 つの整数に対して除算を実行し、整数の商のみを返します。 小数点以下の剰余は切り捨てられます (破棄されます)。

@set1 が 47、@set2 が 638 の場合、整数除算の結果は 47 ÷ 638 = 0 になります。これは出力がゼロであることを説明します。

これを解決して正しい 10 進数の結果 (約 0.073667712) を取得するには、除算の前に @set1@set2 を浮動小数点数 (float) に明示的に変換します。 float は小数部分を処理できます。

解決策には、次の簡単なコード調整が含まれます。

<code class="language-sql">SET @weight = CAST(@set1 AS FLOAT) / CAST(@set2 AS FLOAT);</code>
ログイン後にコピー

要約すると、整数の除算の動作を理解することが、正確なプログラミングの鍵となります。 整数を浮動小数点に変換すると、正確な計算が保証され、誤ったゼロの結果が防止されます。

以上が除算の計算で 10 進数値ではなくゼロが返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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