[#47173] 小数点以下を切り捨てる方法について — "T.Soejima" <clev@...2.so-net.ne.jp>

お世話になっております。そえじま@勉強中です。

16 messages 2010/06/23

[ruby-list:47191] Re: 小数点以下を切り捨てる方法について

From: Kentaro Goto <gotoken@...>
Date: 2010-06-24 11:16:55 UTC
List: ruby-list #47191
In [ruby-list:47182] 2010/6/24 KISHIMOTO, Makoto <ksmakoto@dd.iij4u.or.jp>:

> 浮動小数点数を厳密に10進小数で表現することは一般にはできないので限界はありますが、

2進の有限小数は10進だと有限小数になりますよ。
逆は循環することがあるけど。

> 適当な桁数で文字列にして、文字列の編集で削るとか。古典的ですが。
>
> ('%.10g' % 1.2345678).sub(/(\....).*/){$1}

[ruby-list:47188] で出てくる20桁はたしか x86 だと内部80bitだから
ちょうど1くらい大きさの数だとうまくいくんだと思います。

% bc -l <<<'l(2^80)/l(10)'
24.08239965311849561717
%

だから10進24桁くらいまで指定しても意味があるのかもしれません。
1に近い数のときは。


それはともかく、もともとの10進小数の切捨てというのが
「本当に」必要なのかは疑問に感じました。
ワーストケースで比較すると四捨五入の2倍くらい
誤差がありますので。


ごとけん

In This Thread