Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim a As Double = 0.234
Dim b As Double = (0.236 - 0.002)
Debug.WriteLine(a = b)
End Sub
答えがFalseになってしまいます!
バグというより計算機の宿命ですね
0.234と0.002では指数部の値が異なっており、またそれぞれの数値が2進数で
は割り切れない数字なので、2つの数字を演算する時の指数部の変換の際に
どうしても誤差が出てしまいます。
ためしに下記計算ではTrueになると思いますよ
a=0.234
b=0.334 - 0.1
とか
a = 0.625
b = 0.5625 + 0.0625
という性質があるので小数の比較で=演算子を使用するのはプログラム上
避けたほうがいいでしょう。
>0.234と0.002では
訂正)0.236と0.002では
なんと。計算機の宿命でしたか。勉強になりました。
編集 削除