[ruby-list:49812] Re: 小数点以下の表示で質問があります。
From:
Fumiaki Sakamoto <ght8270407fs@...>
Date:
2014-04-23 08:35:32 UTC
List:
ruby-list #49812
ありがとうございます。
そちらも行ってみます。
坂元史明
On 2014/04/23 17:23, "EGUCHI Osamu" <eguchi@sandeinc.com> wrote:
>えぐち@エスアンドイーです
>
>sprintf の %a フォーマットで浮動小数点数のビットパターンを見てみると、
>発見があるかもしれません。
>
> output = sprintf("%18.16f %a(%a)", c, c, eval("0." + "9" * i))
>
>こんな感じ。
>
> えぐち
>
>2014年4月23日 16:50 Fumiaki Sakamoto <ght8270407fs@kfa.biglobe.ne.jp>:
>> ありがとうございます。
>> 早速行ってみます。
>>
>> On 2014/04/23 16:42, "Tetsuo Sakaguchi" <saka@slis.tsukuba.ac.jp> wrote:
>>>In message <CF7D8806.26B3%ght8270407fs@kfa.biglobe.ne.jp>
>>>2014-04-23T15:17+0900,
>>> Fumiaki Sakamoto <ght8270407fs@kfa.biglobe.ne.jp> wrote:
>>>> Rationalを使っても、0.1という形で10分の1を表現しても私の方法では結果は同じで
>>>> した。
>>>
>>>a に Rational のインスタンスをいれても他に Float な値があると計算する際に
>>>Float に変換されて、2進の浮動小数点数計算になるので、十進の 0.1 は
>>>2進化される際に近似値になってしまうと思います。その辺りが
>>>きしもとさんの「中途半端に」という指摘なんだと思います。
>>>
>>>Rational で計算させたいのなら、b とか c に代入している 9.0 とか 0.0 も
>>>Rational か整数にしないと。。。
>>>
>>>> もともと、0.999...という循環小数が
>>>> 0.999...= 9 x (1/10)**1 + 9 x (1/10)**2 + 9 x (1/10)**3 + ・・・+ 9 x
>>>> (1/10)**n
>>>> で表現され、n=∞の時に1に等しくなるというところを出典に試しに計算させたもので
>>>> す。
>>>>
>>>> On 2014/04/23 13:33, "KISHIMOTO, Makoto" <ksmakoto@dd.iij4u.or.jp>
>>>>wrote:
>>>>
>>>> >きしもとです
>>>> >
>>>> >> require 'rational'
>>>> >> a = 0.1 あるいは a = Rational(1, 10)
>>>> >
>>>> >この、中途半端に有理数を使って(使おうとして)いるのは何でしょうか?