[ruby-list:49802] Re: 小数点以下の表示で質問があります。
From:
Fumiaki Sakamoto <ght8270407fs@...>
Date:
2014-04-23 02:38:40 UTC
List:
ruby-list #49802
すみません。質問の1行目で6番目と7番目とありますが、6番目と8番目です。
From: Fumiaki Sakamoto <ght8270407fs@kfa.biglobe.ne.jp>
Reply-To: "Ruby users (Japanese)" <ruby-list@ruby-lang.org>
Date: 2014年4月23日水曜日 11:25
To: "Ruby users (Japanese)" <ruby-list@ruby-lang.org>
Subject: [ruby-list:49801] 小数点以下の表示で質問があります。
お忙しい中を恐縮ですが質問があります。
下記の様なプログラムを実行すると、以下のようになります。
ruby --version
ruby 1.9.3p484 … [amd64-freebsd]
<プログラム>
require 'rational'
a = 0.1 あるいは a = Rational(1, 10)
b = 9.0
i = 1
c = 0.0
while i < 20 do
c = c + b * a ** i
output = sprintf("%18.16f", c)
print i, " ", c, " ", output, "\n"
end
<結果>
1 0.9 0.9000000000000000
2 0.99 0.9900000000000000
3 0.999 0.9990000000000000
4 0.9999 0.9999000000000000
5 0.99999 0.99999000000000000
6 0.9999990000000001 0.9999990000000001
7 0.9999999 0.9999999000000001
8 0.9999999900000001 0.9999999900000001
9 0.999999999 0.9999999990000000
10 0.9999999999 0.9999999999000000
11 0.99999999999 0.9999999999900000
12 0.999999999999 0.9999999999990000
13 0.9999999999999 0.9999999999999000
14 0.99999999999999 0.9999999999999900
15 0.999999999999999 0.9999999999999990
16 0.9999999999999999 0.9999999999999999
17 1.0 1.0000000000000000
18 1.0 1.0000000000000000
19 1.0 1.0000000000000000
<質問>
6番目と7番目の結果が桁数指定していなくても16桁で表示されました。
小数点以下を16桁にして表示させると7番目も普通に考えると16桁で表示されていても
おかしくないと思えるのにそうはならなかったのは何故でしょうか?
宜しくお願いいたします。
坂元史明