[#43713] Re: 演算子の優先順位(was: Re: irb と python のバグ?) — "きむらこういち" <hogemuta@...>

木村です。

20 messages 2007/07/14
[#43715] Re: 演算子の優先順位(was: Re: irb — TunTun-m <tntn@...> 2007/07/14

bc では次式の結果は 0.81 ではなく 0.8 になります。

[ruby-list:43734] Re: 演算子の優先順位(was: Re: irb

From: 山崎雄介 <y-yamasaki@...>
Date: 2007-07-16 14:36:17 UTC
List: ruby-list #43734
山崎(ゆ)です。

> 0.9 x 0.9 = 0.8     ならば
> 0.1 x 0.1 = 0.0    になるということでしょうか?

現実の有効数字のルールを適用するならば、
0.9 x 0.9 = 0.81 =~ 0.8
0.1 x 0.1 = 0.01

bc的有効数字のルールを適用するならば、
0.9 x 0.9 = 0.81 =~ 0.8
0.9 x 0.9 = 0.01 =~ 0.0

ということになるのだと思います。bc的有効数字のルールらしきものとして、
マニュアルに以下のような記述がありました。
http://www.linux.or.jp/JM/html/GNU_bc/man1/bc.1.html
> 数には length と scale という 2 つの属性があります。 length は 10 進での
> 有効桁数で、scale は小数点以下の 10 進での有効桁数です。例えば、
>  .000001 は、lengthが 6 で、scale も 6 です。
>  1935.000 は、lengthが 7 で、scale が 3 です。

これによるとbcでの0.01は (length = 2, scale = 2)ということのようです。
したがって、有効桁数1に丸められた結果、0.01 ~= 0.0になるのでしょう。

---
Yusuke Yamasaki <y-yamasaki@saeilo.co.jp>


In This Thread