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

タイトル VB2005の倍精度計算精度は?
投稿日: 2008/10/04(Sat) 22:48
投稿者chime
VB6の計算をVB2005に移植中ですが、計算精度に疑問がでました。
VB6では
Visible = True
Dim sj1 As Double, sj2 As Double, sj3 As Double
Dim x As Double
Dim n As Integer, i As Integer
Dim sj(500) As Double
        n = 14
        sj3 = 0
        sj2 = 0.00001
        x = 2.40482555769577
        For i = 1 To n - 1
            sj1 = 2# * (n - i) * sj2 / x - sj3
            sj3 = sj2
            sj2 = sj1
        Next i
         Print sj1
で、答えが8.32489632784927E-12です。
VB2005では
     Visible = True
        Dim sj1, sj2, sj3, x As Double
        Dim n, i As Integer
        Dim sj(500) As Double
        n = 14
        sj3 = 0
        sj2 = 0.00001
        x = 2.40482555769577
        For i = 1 To n - 1
            sj1 = 2.0# * (n - i) * sj2 / x - sj3
            sj3 = sj2
            sj2 = sj1
        Next i
        Label1.Text = CStr(sj1)
で答えは8.18545231595635E-12
と計算結果が異なります。さらにsj2=1.0E-10から始めると
sj1の答えは値が5桁小さくなりますが、VB6とVB2005では3倍程度結果が異なります。

まだ、どちらの計算が正しいかの検討はしてはいませんが、厄介なことになりそうです。

chime

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

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