tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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 判定時に同様の型変換が起こってるかどうかなどの詳細説明までになってくると
もう少し詳しい人の意見を待ったほうが良いでしょう。
上の検証結果では完全に説明はできていませんのでお間違いなく。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。