TimberLandChapelのTech Blog

TimberLandChapel が提供する技術Tips,思いつきメモ,雑感ブログです。
Office 互換リボン Release 1.0 をリリースしました。

購読

今期のアンケート

INETAJ

Microsoft

SQL Server

TLC.com

クリエイティブ・コモンズ

情報処理関係官公庁

【VB6.0 Tips】CDec という魔法のおまじない(2)
計算結果が不安定になるよい例ですね。
浮動小数点の特性を知るにはこういうのがよいかな?
と思います。

これを実行すると,
結果が「3」と出る場合と「2」と出る場合とが混在してきます。
IDE上でやってみたり,
EXEにコンパイルしてやってみたりと実行回数を重ねればてんでたいへんなことになります。
まぁ,浮動小数は概数なんだよ。
というのは当然として,概数の丸めってこんなに不安定でいいのか?
と思うところではありますが,
メインフレームのXDとかはもっと丸めの評価自体が安定しているのですよね。

基本的には乗算を優先して,除算を後回しにする。というのも効果的ですが。
最終的には固定小数点を使って,尚且つ計算手順を工夫して除算を排除する。
ということになりますね。

Private Sub Command1_Click()
Dim Buff As String
Dim DoubleValue1 As Double
Dim DoubleValue2 As Double

DoubleValue1 = CDbl(2.9)
DoubleValue2 = CDbl(0.1)

Buff = CStr(Int(2.9 + 0.1))
MsgBox Buff

Buff = CStr(Int(DoubleValue1 + 0.1))
MsgBox Buff

Buff = CStr(Int(2.9 + DoubleValue2))
MsgBox Buff

Buff = CStr(Int(DoubleValue1 + DoubleValue2))
MsgBox Buff
End Sub
Published 2005年8月14日 22:45 投稿者 timberlandchapel

コメント

# 【TLC の Tech Blog 復刻版】VB6.0 で使う CDec という魔法のおまじない@ 2005年8月14日 22:53

旧ブログで3回にわたって書いた,小連載です。
VB6.0 で浮動小数点を扱う際の注意点というか,豆知識というか。
根本的な解決は図れないですけど,知っていて損は無い情報です。
■CDec という魔法のおまじない...