ホームページ >データベース >mysql チュートリアル >整数の除算で小数値ではなくゼロが得られるのはなぜですか?
整数除算からの予期しないゼロ結果
最近のプログラミング プロジェクト中に、次のコードにより予期しない結果が生じました:
<code>PRINT @set1 PRINT @set2 SET @weight= @set1 / @set2; PRINT @weight</code>
除算の結果は、予想される 0.073667712 ではなく 0 でした。
根本原因: 整数データ型
問題は、@set1
と @set2
のデータ型に起因します。 どちらも整数であり、整数のみを格納できます。 整数の除算では常に小数部分が切り捨てられ、結果は整数になります。 したがって、47 を 638 で割ると、結果は 0 になります。
ソリューション
正しい 10 進数の結果を取得するには、次の 2 つのアプローチが使用できます。
変数を浮動小数点数として定義: @set1
と @set2
を浮動小数点数 (浮動小数点) として宣言します。これにより、変数が 10 進数値を保持できるようになり、正確な 10 進除算が保証されます。
計算中の型キャスト: 変数のデータ型を変更できない場合は、CAST
演算子を使用して、除算中に一時的に整数を浮動小数点に変換します:
<code>SET @weight= CAST(@set1 AS float) / CAST(@set2 AS float);</code>
どちらの方法でも、除算演算が期待される 10 進数値を返すことが保証され、予期しない結果がゼロになる問題が解決されます。
以上が整数の除算で小数値ではなくゼロが得られるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。