From: Kenta Murata Date: 2010-02-08T07:32:57+09:00 Subject: [ruby-dev:40347] Re: patch for ruby-core:17472 村田です。 On 2010/02/07, at 22:04, TOYOFUKU Chikanobu wrote: > 豊福です。 > >> - 除数 > 0 ⇒ 0 <= 剰余 < 除数 > > 私もこの前 mod に「剰余 < 除数」を期待すると書きましたが改めて > 考えたら、例えば > (有効桁数1桁で1億).mod((有効桁数いくつであろうが)3) > には意味のある値として何を期待すべきでしょうか。 > x = BigDecimal("1E8"); sin(x,100) は sin(正確な1億,100) として > 計算するべきでしょうか。それとも x は求める有効桁数の sin の計算 > には有効桁数が足りないので例外にするべきでしょうか。 一貫性を持たせたいところです。 > ともかく BigDecimal の mod, divMod に関してはまず意味を決める > べきだと思います。Int, Float などとの一貫性を考えると mod, divMod > というメソッドは定義すべきでないのかもしれません。 1.9 には Integer、Rational という二つの正確な数が組み込みで用意されています。 正確な数の表現はこれらに譲って、すべての BigDecimal は有限の精度を持つ ことにしてしまって問題はあるでしょうか? もし問題がないようなら、上記の例題は Mathematica と同じにしたいです。 Mathematica では次のようになります。 In[1]:= N[Sin[N[100000000, 1]], 100] Out[1]= 0. In[2]:= Mod[N[100000000, 1], 3] Out[2]= 0.*10^7 -- Kenta Murata OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC 本を書きました!! 『Ruby 逆引きレシピ』 http://www.amazon.co.jp/dp/4798119881/mrkn-22 E-mail: mrkn@mrkn.jp twitter: http://twitter.com/mrkn/ blog: http://d.hatena.ne.jp/mrkn/