2006年7月 5日

[ruby-list:42521] Re: floatの値がずれる

木村です。

On Wed, 5 Jul 2006 14:22:03 +0900
Tadashi Saito <shiba@xxxxx> wrote:

> > または、固定小数点数ライブラリ(BigDecimal)を使ってみましょう。
>
> 完全にちゃちゃですが、誤差が発生しない⇒固定小数点数っていうのは

> 誤解だと思います。


| BigDecimal は <浮動小数点数> = 0.xxxxxxxxx*10**n という10進形式で数値を
| 保持します。しかし、計算機の浮動小数点数の内部表現は、言うまでもなく
| <浮動小数点数> = 0.bbbbbbbb*2**n という 2進形式が普通です(x は 0 から
| 9 まで、b は 0 か 1 の数字)。

ということなので、二進←→十進変換がないので(変換に起因する)誤差がないと
いうところでしょうね。


> http://ja.wikipedia.org/wiki/%E5%9B%BA%E5%AE%9A%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0
> > 固定小数点数では整数部分に用いるビット数と小数部分に用いるビット数をあらかじめ
> > 固定して表現する。
>
> BigDecimalにこのような部分は見当たらないと思うのですが。

固定小数点云々については

| BigDecimal は可変長浮動小数点計算機能ライブラリです。

頭でこう云いきってますね。


####

BigDecimalに関する記述は

http://www.ruby-lang.org/ja/man/?cmd=view;name=BigDecimal#a2.bf.ca.a4.c810.bf.ca

から引用しました。

--
木村浩一


投稿者 xml-rpc : 2006年7月 5日 14:47
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/42450
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。