From: Kenta Murata Date: 2010-07-03T15:52:13+09:00 Subject: [ruby-dev:41794] [Bug #3529] BigDecimal.mode(BigDecimal::EXCEPTION_*) の初期値が0になっている Bug #3529: BigDecimal.mode(BigDecimal::EXCEPTION_*) の初期値が0になっている http://redmine.ruby-lang.org/issues/show/3529 起票者: Kenta Murata ステータス: Open, 優先度: Normal 担当者: Kenta Murata, カテゴリ: ext, Target version: 1.9.x ruby -v: ruby 1.9.3dev (2010-07-03 trunk 28532) [x86_64-darwin10.4.0] BigDecimal.mode で設定可能な例外モードの値は true または false になっており、 これらの値以外を設定しようとするとエラーになります。 ところが、例外モードの初期値は 0 になっています。 $ ruby -rbigdecimal -ve 'p %w(NaN INFINITY UNDERFLOW ZERODIVIDE).map{|x| BigDecimal.mode(BigDecimal.const_get(:"EXCEPTION_#{x}")) }' ruby 1.9.3dev (2010-07-03 trunk 28532) [x86_64-darwin10.4.0] [0, 0, 0, 0] このままでは以下のようなコードでエラーになる場合があるので、修正が必要です。 begin last_mode = BigDecimal.mode(BigDecimal::EXCEPTION_INFINITY) BigDecimal.mode(BigDecimal::EXCEPTION_INFINITY, false) ... ensure # ここでエラーになる場合がある BigDecimal.mode(BigDecimal::EXCEPTION_INFINITY, last_mode) end ---------------------------------------- http://redmine.ruby-lang.org