実数の計算結果がイコールで完全一致することはごく稀です。
とりあえず提示された条件でなぜイコールにならないのか確認できるスクリプトを書いてみました。
mes strf("%1.20f", 1.00-0.95)
mes strf("%1.20f", 0.05)
;デバッグウィンドウでも見れるけど、変数の中をそのまま16進数表記してみる。
a = 1.00-0.95
y = ginfo_cy
repeat 8
pos cnt*20, y
mes strf("%02X", peek(a, 7-cnt))
loop
a = 0.05
y = ginfo_cy
repeat 8
pos cnt*20, y
mes strf("%02X", peek(a, 7-cnt))
loop
そもそも実数の全てを64bit程度で表現できるわけがなく…そいういうものだと思ってください。(例えば円周率なんかを思ってください。)
プログラムで実数を使うときは以上、以下なんかを使うといいですよ。
どうしても制度が必要な場合は整数を使います。
例:
dialog ((100-95)==5) ;×100して計算する。