NET(VB) VBでは0除算例外が出ない
VBでは0除算例外(DivideByZeroException)が出ないなんて
ずっとVBやってたきたけど知らなかったよ。
しばらくC#やってたから忘れたのかナ…
詳しくはコチラhttp://salvw.miscnotes.com/index.php/archives/1282
Dim i1 As Integer = 1
Dim i2 As Integer = 0
結果を格納する変数の型がDoubleなら落ちない。
Dim ret1 As Double = i1 / i2
結果を格納する変数の型がDoubleでないと落ちる。
Dim ret2 As Integer = i1 / i2
・i1とi2がDoubleにキャストされて、除算が行われる。CDbl(i1) / CDbl(i1)
・除算の結果は正の無限大または負の無限大になる。
・結果を格納する変数がDoubleなら落ちない。
・結果を格納する変数がDoubleでないなら、無限大の値を格納しようとしてオーバーフロー例外がスローされる。
Decimal型であれば事前にDouble型に変換されないので、0除算例外が発生する。
Dim d1 As Decimal = 1
Dim d2 As Decimal = 0
Dim ret3 As Double = d1 / d2
除算するときはDecimalにキャストしてからにしよっと。
登録:
コメントの投稿 (Atom)
-
DataTableから重複を除くには と DataTableの集約計算を行う(Compute) を利用して、DataTableをグループ化し集計を行います。 以下のようなデータが入ったDataTableから、Field1とField2で重複を取り除き集計をおこないます。...
-
前回「 PLSQL SELECTの結果を取得する ~取得結果が1行の場合~ 」に続き 今回はSELECTの結果が複数行の場合です。 SELECTの結果が複数行の場合はカーソルを使用します。 カーソルとは SELECTの結果セットに対して、1行ずつデータを取り出し、順次...
-
datatableの集約計算を行うにはDataTable.Compute メソッドを使用します。 Dim As Object '最大値を求める value = datatable.Compute("Max(集計列名)", Nothing) ...
0 件のコメント:
コメントを投稿