ホームページ >データベース >mysql チュートリアル >整数の除算で小数値ではなくゼロが得られるのはなぜですか?

整数の除算で小数値ではなくゼロが得られるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-20 17:31:12282ブラウズ

Why Does Integer Division Yield Zero Instead of a Decimal Value?

整数除算からの予期しないゼロ結果

最近のプログラミング プロジェクト中に、次のコードにより予期しない結果が生じました:

<code>PRINT @set1
PRINT @set2

SET @weight= @set1 / @set2;
PRINT @weight</code>

除算の結果は、予想される 0.073667712 ではなく 0 でした。

根本原因: 整数データ型

問題は、@set1@set2 のデータ型に起因します。 どちらも整数であり、整数のみを格納できます。 整数の除算では常に小数部分が切り捨てられ、結果は整数になります。 したがって、47 を 638 で割ると、結果は 0 になります。

ソリューション

正しい 10 進数の結果を取得するには、次の 2 つのアプローチが使用できます。

  1. 変数を浮動小数点数として定義: @set1@set2 を浮動小数点数 (浮動小数点) として宣言します。これにより、変数が 10 進数値を保持できるようになり、正確な 10 進除算が保証されます。

  2. 計算中の型キャスト: 変数のデータ型を変更できない場合は、CAST 演算子を使用して、除算中に一時的に整数を浮動小数点に変換します:

<code>SET @weight= CAST(@set1 AS float) / CAST(@set2 AS float);</code>

どちらの方法でも、除算演算が期待される 10 進数値を返すことが保証され、予期しない結果がゼロになる問題が解決されます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。