Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library bigdecimal > class BigDecimal > mode
mode(s [, v])
BigDecimalの実行結果を制御します。 第2引数を省略、または nil を指定すると現状の設定値が戻ります。 以下の使用方法が定義されています。
計算結果が非数(NaN)やゼロによる除算になったときの処理を定義することができます。
f = BigDecimal::mode(BigDecimal::EXCEPTION_NaN,flag) f = BigDecimal::mode(BigDecimal::EXCEPTION_INFINITY,flag) f = BigDecimal::mode(BigDecimal::EXCEPTION_UNDERFLOW,flag) f = BigDecimal::mode(BigDecimal::EXCEPTION_OVERFLOW,flag) f = BigDecimal::mode(BigDecimal::EXCEPTION_ZERODIVIDE,flag) f = BigDecimal::mode(BigDecimal::EXCEPTION_ALL,flag) * [[m:BigDecimal::EXCEPTION_NaN]] は結果が NaN になったときの指定です。 * [[m:BigDecimal::EXCEPTION_INFINITY]] は結果が無限大(±Infinity)になったときの指定です。 * [[m:BigDecimal::EXCEPTION_UNDERFLOW]] は指数部がアンダーフローするときの指定です。 * [[m:BigDecimal::EXCEPTION_OVERFLOW]] は指数部がオーバーフローするときの指定です。 * [[m:BigDecimal::EXCEPTION_ZERODIVIDE]] はゼロによる割り算を実行したときの指定です。 * [[m:BigDecimal::EXCEPTION_ALL]] は、可能な全てに対して一括して設定するときに使用します。
flag が true のときは、指定した状態になったときに例外を発行するようになります。 flag が false(デフォルト)なら、例外は発行されません。計算結果は以下のようになります。
BigDecimal::EXCEPTION_INFINITY、BigDecimal::EXCEPTION_OVERFLOW、 BigDecimal::EXCEPTION_ZERODIVIDE は今のところ同じです。 戻り値は、設定後の値です。「値」の意味は、例えば BigDecimal::EXCEPTION_NaN と「値」の & が ゼロ以外ならば BigDecimal::EXCEPTION_NaNが設定されているという意味です。
計算途中の丸め操作の指定ができます。
f = BigDecimal::mode(BigDecimal::ROUND_MODE,flag)
の形式で指定します。 ここで、flag は以下(括弧内は対応するインスタンスメソッド)の一つを指定します。
戻り値は指定後の flag の値です。第2引数に nil を指定すると、現状の設定値が返ります。 mode メソッドでは丸め操作の位置をユーザが指定することはできません。丸め操作と位置を自分で制御したい場合は BigDecimal::limit や truncate/round/ceil/floor、 add/sub/mult/div といったインスタンスメソッドを使用して下さい。