[#49804] Re: 小数点以下の表示で質問があります。 — Fumiaki Sakamoto <ght8270407fs@...>

自己レスですみません。

14 messages 2014/04/23
[#49805] Re: 小数点以下の表示で質問があります。 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp> 2014/04/23

きしもとです

[#49806] Re: 小数点以下の表示で質問があります。 — Fumiaki Sakamoto <ght8270407fs@...> 2014/04/23

きしもとさま

[#49808] Re: 小数点以下の表示で質問があります。 — Tetsuo Sakaguchi <saka@...> 2014/04/23

阪口です。

[ruby-list:49814] Re: 小数点以下の表示で質問があります。

From: "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
Date: 2014-04-23 09:23:59 UTC
List: ruby-list #49814
きしもとです

一応解決したようなので、深い話は止めますが、一応最低限のことだけ。

> おそらく、RubyのFloat演算は自動的に誤差の丸めをしており、6番目と8番目では丸め
> きれずに小数点以下16桁で表示し、7番目は誤差が丸められていたということでしょう
> か。

といったように、なんとなく丸めたり、ということを ruby はして
いませんし、一般に、するべきではありません、というか、しては
いけません。

# 有名企業の有名なソフトの昔の版で確認されているように、
# 世の中に悪例はありますが。
# http://http://oku.edu.mie-u.ac.jp/~okumura/software/excel/roundoff.html

to_s が、小数点の直後の 0 を除いて、0 が連続して最後まで 0
ならその 0 は削る(ゼロサプレス)ということをするため、数に
よっては切りが良い数のように見えたりしますが、十進小数で
切りの良い値が、二進で切りが良いわけではない、ということに
注意してください。

Float は内部的には二進法で表現されているため、0.5, 0.25 の
ような二進で切りの良い小数以外は、たとえば 0.1 や 0.9 と
いった値には誤差があります。そのため組み合わせによっては、
最下位の桁が 0 ではなく 1 になったりするわけです。

これは、なんとなく丸めているのではなく、内部で表現されている
最後の桁まで計算したうえで、表現し切れない最初の桁で0捨1入
(4捨5入)した結果そうなる、ということです。

On Wed, 23 Apr 2014 17:35:32 +0900
Fumiaki Sakamoto <ght8270407fs@kfa.biglobe.ne.jp> wrote:
> ありがとうございます。
> そちらも行ってみます。
> 
> 坂元史明

In This Thread