整数の除算と予期しないゼロの結果
コード例では、10 進数値 (0.073667712) が予期される除算演算からゼロの結果が生成されます。 これは、変数がデフォルトで整数として扱われるためです。 多くのプログラミング言語の整数除算では、結果の小数部分が切り捨て (破棄) され、整数部分のみが残ります。 したがって、47 を 638 で割ると、結果はゼロになります。
解決策: 浮動小数点データ型の使用
正しい 10 進数の結果を取得するには、浮動小数点数 (プログラミング言語に応じて float
または double
など) を使用する必要があります。 これは 2 つの方法で実現できます:
変数を浮動小数点として宣言する: @set1
と @set2
を最初から浮動小数点データ型として定義します。 特定の構文は、プログラミング言語によって異なります。
型キャスト: 型キャスト関数 (SQL の CAST
や他の言語の同様の関数など) を使用して除算を実行する前に、整数変数を浮動小数点数に明示的に変換します。 例:
<code class="language-sql">SET @weight = CAST(@set1 AS float) / CAST(@set2 AS float);</code>
これにより、浮動小数点数で除算が実行され、小数部分が保持され、期待される約 0.073667712 の結果が得られます。
以上が整数の除算で 10 進数値ではなくゼロが返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。