タイトル : Re: IF文 複数条件判定のバグ 投稿日 : 2009/07/30(Thu) 13:28 投稿者 : るしぇ
>私一人では見つけられないでおります。 最終的にそれなら仕方ないけど、まだまだできることはあるんじゃないの? 少なくとも条件を1つ1つ検証するくらいはプログラムを知らない人でも 考えられるのでは? Dim a As Single = 0.0194 Dim b As Single = -0.56 Dim c As Single = 2.18 Dim d As Integer = 20 Dim o As Object Debug.WriteLine(a) Debug.WriteLine(b) Debug.WriteLine(c) Debug.WriteLine(d) If Not (a = 0.0194) Then Debug.WriteLine("Not a") o = 0.0194 Debug.WriteLine(o.GetType) Debug.WriteLine(o) Debug.WriteLine(0.0194 - a) End If If Not (b = -0.56) Then Debug.WriteLine("Not b") o = -0.56 Debug.WriteLine(o.GetType) Debug.WriteLine(o) Debug.WriteLine(-0.56 - b) End If If Not (c = 2.18) Then Debug.WriteLine("Not c") o = 2.18 Debug.WriteLine(o.GetType) Debug.WriteLine(o) Debug.WriteLine(2.18 - c) End If If Not (d = 20) Then Debug.WriteLine("Not d") o = 20 Debug.WriteLine(o.GetType) Debug.WriteLine(o) Debug.WriteLine(20 - d) End If > 0.0194 > -0.56 > 2.18 > 20 > Not a > System.Double > 0.0194 > -5.72204589266434E-10 > Not b > System.Double > -0.56 > 2.38418573772492E-09 > Not c > System.Double > 2.18 > -6.67572019885654E-08 はっきりとした理由までは示せないけど、とりあえず Double で処理されてます。 型変換せずに出力するとおかしな点は出力できませんが、演算すると丸め誤差を 出力できるようです。 IF 判定時に同様の型変換が起こってるかどうかなどの詳細説明までになってくると もう少し詳しい人の意見を待ったほうが良いでしょう。 上の検証結果では完全に説明はできていませんのでお間違いなく。 |