From: Yukihiro Matsumoto Date: 2008-11-26T03:10:53+09:00 Subject: [ruby-dev:37195] Re: [Bug #793] BigDecimal('Infinity').to_r が零になる まつもと ゆきひろです In message "Re: [ruby-dev:37187] [Bug #793] BigDecimal('Infinity').to_r が零になる" on Tue, 25 Nov 2008 23:29:59 +0900, tadayoshi funaba writes: |$ ./ruby -rbigdecimal -e "p BigDecimal('Infinity').to_r" |(0/1) |以前、訊ねたと思うのですが、to_i が nil になるのも問題があると思います。 | |$ ./ruby -rbigdecimal -e "p BigDecimal('Infinity').to_i" |nil どうもBigDecimalの仕様を見てると * BigDecimal.modeという属性があり、どのような時に例外が発 生するかグローバルな状態として設定できる * デフォルトではあらゆる例外を発生させない という意思があるようです。個人的にはグローバルな状態も、まず い状況でも例外を起こさず継続するのも、あまり良くない設計では ないかと感じないでもないです。 ただ、BigDecimalで閉じてるうちはうれしいこともあるのかもしれ ないので、「Rubyの世界」に入ってくるto_*では明示的に例外を発 生させることにします。 まあ、数学知らずの私の判断ですから、間違っている可能性はいつ も高いのですが、その場合はどなたか指摘してください。 まつもと ゆきひろ /:|)