タイトル : Re: 当方疑問解決です。VB6.0の方が正しく計算できていない(再投稿) 投稿日 : 2008/10/06(Mon) 19:00 投稿者 : chime
花ちゃんさん > 下記なら VB6.0 でも 結果が 8.18545231595635E-12 となり .NET と同じ結果になります > どうも VB6.0 の方がおかしいようですね。 > Debug.Print CStr(sj1) '結果 8.18545231595635E-12 上記結果を確認しました。 i=13での結果で 2737.46092971297-2737.46092971296 を計算しているのですが、Yuoさんご指摘の倍精度有効桁数15桁の最後の桁が違います。 直接計算では 8.32489632784927E-12 ご指摘の分割計算では 8.18545231595635E-12 でVB2005と一致します。 しかし、sj=1E-10から計算するとやはり有効桁数最後での違いで VB6は 非分割計算では 8.15015101848088E-17 分割計算では 7.97972798949331E-17 VB2005は 非分割計算では 8.32667268468867E-17 分割計算では 8.32667268468867E-17 です。 VB6は分割してもVB2005の結果とは一致しません。 VB6、VB2005の結果もいずれも倍精度有効桁数の範囲で8E-12、8E-17 となり、第16桁目以降は議論できないとの結論です。 有益なコメント大変ありがとうございました。 |