タイトル | : VB2005の倍精度計算精度は? |
記事No | : 8273 |
投稿日 | : 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
|