田中@ISASです。

In message: [ruby-math:00206] Re: (summary) SingleFloat, DoubleFloat < Float
>>> matz / netlab.co.jp (Yukihiro Matsumoto) wrote:

> |「演算は無限精度で行い結果を丸め希望の精度を得る」
> |と言う場合に、doubleは「無限精度」の近似として
> |float に対しては十分である。 ...と言う事ですね。
>
> であるならば、0.1fとdoubleの0.1から丸めた0.1fは同じものと言
> えないでしょうか。

違う数値になり得ますが、精度の点では同じもの、
と言えると思います。

0.1f では例になっていないので、別のたとえを挙げます。
AさんとBさんがある測定をして、0.495という値を得ました。
Aさんはノートにそのままの値を書きましたが、
Bさんは一番下の桁は信頼できないと思って四捨五入し、0.50と書きました。
その後検討した結果、そのデータの信頼性は
最終的に 1 程度であることがわかったので、
Aさん、Bさんともに少数第一位を四捨五入しました。
すると、Aさんの結果は 0、Bさんの結果は 1 となり、
同じ数値を得たのに違う結果となってしまいました。
これはどちらかが間違っているというわけではなくて、
0 も 1 も 0.495 からの差という点では同等です。

ここで、0.495 は 前の話では"0.1"という実数に対応し、
0.50 は doubleに丸めた値、
0と1 は floatに丸めた値に対応します。

このように丸め方が違うと違う数値になり得ますが、
それは上のたとえでは0.5に近いわずかな部分の話であって、
このために精度が落ちるようなことはない、と考えます。

他の問題があるかどうかはわかりません。

田中昌宏