ちょwww

id:elb_phys:20060126#1138259799
なんでそんなことになるんだろなー、とか思ったんですが、結局アレですね、丸め誤差と情報落ちの醸し出すシンフォニーといったところ。
0.1をdoubleで表現した場合、まず0.1よりちょっとだけ大きな数として表現される。で、おそらくその場合には最下位ビットは1なんですな。で、この1のおかげでちょっとだけ0.1より大きいままなんだけれども、それが0.5を越えたあたりで、0.5 + 0.1の計算が行われて、これによる情報落ちで最下位ビットが無視される。そうすると、そこからは0.1よりちょっと小さい数との足し算と同一視されてしまうので、約1.1で終了となってしまう。
で、これを確かめるためのコードを書こうと思ったのですが、そろそろ寝ることにします。