From: Tadashi Saito Date: 2003-07-31T02:17:53+09:00 Subject: [ruby-dev:21031] Re: [BigDecimal] exception handling 斎藤です。なかなか遅れてしまいすみません。 ----- Original Message ----- From: "Shigeo Kobayashi" Sent: Monday, July 28, 2003 9:51 PM Subject: [ruby-dev:20966] Re: [BigDecimal] exception handling > > 前述の通り、これはFloatの仕様にならっています。またユーザに対し > > nilとIntegerとの演算が成されるよりも早いタイミングで、エラーを > > 示す事ができます。 > くどいようですが「早いタイミング」ならNaNが発生した時点でしょう? > それは、BigDecimal#mode を指定することで raise できるんですよ。 > 今の BigDecimal#mode のデフォルト値を変更すべきであるという > 話なら理解できます。もっとも、そうしたところで to_i で raise する > (まともな)ケースを考えられますか? ええとよく分からないのですが、ユーザがその場で明示的に例外を あげるようmodeを指定しなければ、BigDecimalでは扱えるけれど Integerで扱えない値、というのが出てきますよね。 それについて例えば、 ・(デフォルトのように)BigDecimalでNaNを扱えても ・IntegerではNaNは扱えないので ⇒NaNをto_iしたらエラー という話をしたいだけなのですが…。 現状の、nilを返すのみの挙動が望ましくないのでは、という事です。 これはBigDecimal.mode(BigDecimal::EXCEPTION_FOO, true) の話とは関係なく、エラーの方が望ましいと思います。 > これは(現状の)Floatではできないということを考えるべきじゃないで > すか? BigDecimal==Float と考えていませんか? 自分が過剰に思い込んでそう考えている部分はあるかもしれませんが、 少なくとも自分が上に書いた部分においては、Floatと同等に考えた 方が良いのではと思っています。 (Floatで扱えてIntegerで扱えない数は、to_iするとエラーですよね) -- 斎藤ただし