要約
可変長浮動小数点計算クラスです。
目次
- 特異メソッド
- インスタンスメソッド
-
- %
- *
- **
- +
- +@
- -
- -@
- /
- <
- <=
- <=>
- ==
- ===
- >
- >=
- _dump
- abs
- add
- ceil
- clone
- coerce
- div
- div
- divmod
- dup
- eql?
- exponent
- finite?
- fix
- floor
- frac
- hash
- infinite?
- inspect
- modulo
- mult
- nan?
- nonzero?
- power
- precs
- quo
- remainder
- round
- save_exception_mode
- save_limit
- save_rounding_mode
- sign
- split
- sqrt
- sub
- to_f
- to_i
- to_int
- to_r
- to_s
- truncate
- zero?
- 定数
-
- BASE
- EXCEPTION_ALL
- EXCEPTION_INFINITY
- EXCEPTION_NaN
- EXCEPTION_OVERFLOW
- EXCEPTION_UNDERFLOW
- EXCEPTION_ZERODIVIDE
- INFINITY
- NAN
- ROUND_CEILING
- ROUND_DOWN
- ROUND_FLOOR
- ROUND_HALF_DOWN
- ROUND_HALF_EVEN
- ROUND_HALF_UP
- ROUND_MODE
- ROUND_UP
- SIGN_NEGATIVE_FINITE
- SIGN_NEGATIVE_INFINITE
- SIGN_NEGATIVE_ZERO
- SIGN_NaN
- SIGN_POSITIVE_FINITE
- SIGN_POSITIVE_INFINITE
- SIGN_POSITIVE_ZERO
- VERSION
継承しているメソッド
- Numericから継承しているメソッド
- Comparableから継承しているメソッド
特異メソッド
_load(str) -> BigDecimal
[permalink][rdoc][edit]-
引数で指定された文字列を元に BigDecimal オブジェクトを復元します。 Marshal.#load から呼び出されます。
- [PARAM] str:
- 復元する値を表す文字列を指定します。
- [EXCEPTION] TypeError:
- 引数に不正な文字が含まれる場合に発生します。
[SEE_ALSO] BigDecimal#_dump, Marshal.#dump, Marshal.#load
double_fig -> Integer
[permalink][rdoc][edit]-
Ruby の Float クラスが保持できる有効数字の数を返します。
require 'bigdecimal' p BigDecimal::double_fig # ==> 16 (depends on the CPU etc.)
double_figは以下の C プログラムの結果と同じです。
double v = 1.0; int double_fig = 0; while (v + 1.0 > 1.0) { ++double_fig; v /= 10; }
limit(n = nil) -> Integer
[permalink][rdoc][edit]-
生成されるBigDecimalオブジェクトの最大桁数をn桁に制限します。 n を指定しない、または n が nil の場合は、現状の最大桁数が返ります。
戻り値は設定する前の値です。設定値のデフォルト値は0で、桁数無制限を表しています。
計算を続行する間に、数字の桁数が無制限に増えてしまうような場合 limit で予め桁数を制限できます。この場合 BigDecimal.mode で指定された丸め処理が実行されます。ただし、インスタンスメソッド (BigDecimal#truncate / BigDecimal#round / BigDecimal#ceil / BigDecimal#floor / BigDecimal#add/ BigDecimal#sub / BigDecimal#mult / BigDecimal#div) の桁数制限は limit より優先されます。
require 'bigdecimal' n = 0 # デフォルト値 mf = BigDecimal::limit(n)
- [PARAM] n:
- 新しい最大桁数を正の整数で指定します。
- [EXCEPTION] ArgumentError:
- n に負の数を指定した場合に発生します。
mode(s) -> Integer | nil
[permalink][rdoc][edit]mode(s, v) -> Integer | nil
-
BigDecimal の計算処理の制御方法を設定、確認します。
第2引数を省略、または nil を指定すると現状の設定値を返します。
- [PARAM] s:
- 制御方法の設定、確認を行う項目を BigDecimal::EXCEPTION_*、 BigDecimal::ROUND_MODE のいずれかで指定します。
- [PARAM] v:
- 引数 s が BigDecimal::ROUND_MODE の場合は BigDecimal::ROUND_MODE 以外の BigDecimal::_ROUND* のいずれかを指定します。指定した丸め処理が有効になります。それ以外の場合は、true、false、nil のいずれかを指定します。 true を指定した場合は設定値が有効になり、false を指定した場合は設定値が無効になります。
- [EXCEPTION] TypeError:
- 引数 s に有効でない値を指定した場合に発生します。
- [EXCEPTION] ArgumentError:
- 引数 s に例外処理に関する値を指定し、引数 v に true、false 以外の値を指定した場合に発生します。
以下の使用方法が定義されています。
例外処理
計算結果が非数(NaN)やゼロによる除算になったときの処理を定義することができます。
require 'bigdecimal' flag = false # デフォルト値 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)
- BigDecimal::EXCEPTION_NaN は結果が NaN になったときの指定です。
- BigDecimal::EXCEPTION_INFINITY は結果が無限大(±Infinity)になったときの指定です。
- BigDecimal::EXCEPTION_UNDERFLOW は指数部がアンダーフローするときの指定です。
- BigDecimal::EXCEPTION_OVERFLOW は指数部がオーバーフローするときの指定です。
- BigDecimal::EXCEPTION_ZERODIVIDE はゼロによる割り算を実行したときの指定です。
- BigDecimal::EXCEPTION_ALL は、可能な全てに対して一括して設定するときに使用します。
flag が true のときは、指定した状態になったときに例外を発行するようになります。 flag が false(デフォルト)なら、例外は発行されません。計算結果は以下のようになります。
- BigDecimal::EXCEPTION_NaN のとき、非数(NaN)
- BigDecimal::EXCEPTION_INFINITY のとき、無限(+ or -Infinity)
- BigDecimal::EXCEPTION_UNDERFLOW のとき、ゼロ
- BigDecimal::EXCEPTION_OVERFLOW のとき、+Infinity か -Infinity
- BigDecimal::EXCEPTION_ZERODIVIDE のとき、+Infinity か -Infinity
BigDecimal::EXCEPTION_INFINITY、BigDecimal::EXCEPTION_OVERFLOW、 BigDecimal::EXCEPTION_ZERODIVIDE は今のところ同じです。戻り値は、設定後の値です。「値」の意味は、例えば BigDecimal::EXCEPTION_NaN と「値」の & が ゼロ以外ならば BigDecimal::EXCEPTION_NaNが設定されているという意味です。
丸め処理指定
計算途中の丸め操作の指定ができます。
require 'bigdecimal' flag = BigDecimal::ROUND_HALF_UP # デフォルト値 f = BigDecimal::mode(BigDecimal::ROUND_MODE,flag)
の形式で指定します。ここで、flag は以下(括弧内は対応するインスタンスメソッド)の一つを指定します。
- BigDecimal::ROUND_UP 全て切り上げます。
- BigDecimal::ROUND_DOWN 全て切り捨てます(truncate)。
- BigDecimal::ROUND_HALF_UP 四捨五入します(デフォルト)。
- BigDecimal::ROUND_HALF_DOWN 五捨六入します。
- BigDecimal::ROUND_HALF_EVEN 四捨六入します。5の時は上位1桁が奇数の時のみ繰り上げます(Banker's rounding)。
- BigDecimal::ROUND_CEILING 数値の大きい方に繰り上げます(ceil)。
- BigDecimal::ROUND_FLOOR 数値の小さい方に繰り下げます(floor)。
戻り値は指定後の flag の値です。第2引数に nil を指定すると、現状の設定値が返ります。 mode メソッドでは丸め操作の位置をユーザが指定することはできません。丸め操作と位置を自分で制御したい場合は BigDecimal::limit や truncate/round/ceil/floor、 add/sub/mult/div といったインスタンスメソッドを使用して下さい。
new(s, exception: true) -> BigDecimal | nil
[permalink][rdoc][edit]new(s, n, exception: true) -> BigDecimal | nil
-
このメソッドは Ruby 2.5 から deprecated です。Kernel.#BigDecimal を使用してください。
新しい BigDecimal オブジェクトを生成します。
詳しくは Kernel.#BigDecimal を参照してください。
インスタンスメソッド
modulo(n) -> BigDecimal
[permalink][rdoc][edit]self % n -> BigDecimal
-
self を n で割った余りを返します。
- [PARAM] n:
- self を割る数を指定します。
require 'bigdecimal' x = BigDecimal((2**100).to_s) ( x % 3).to_i # => 1 (-x % 3).to_i # => 2 ( x % -3).to_i # => -2 (-x % -3).to_i # => -1
戻り値は n と同じ符号になります。これは BigDecimal#remainder とは異なる点に注意してください。詳細は Numeric#%、 Numeric#remainder を参照して下さい。
self * other -> BigDecimal
[permalink][rdoc][edit]-
積を計算します。
- [PARAM] other:
- self に掛ける数を指定します。
計算結果の精度についてはbigdecimal/計算精度についてを参照してください。
power(n) -> BigDecimal
[permalink][rdoc][edit]power(n, prec) -> BigDecimal
self ** n -> BigDecimal
-
self の n 乗を計算します。
戻り値の有効桁数は self の有効桁数の n 倍以上になります。
- [PARAM] n:
- selfを other 乗する数を指定します。
- [PARAM] prec:
- 有効桁数を整数で指定します。
[SEE_ALSO] Integer#pow
self + other -> BigDecimal
[permalink][rdoc][edit]-
和を計算します。
- [PARAM] other:
- self に足す数を指定します。
計算結果の精度についてはbigdecimal/計算精度についてを参照してください。
+ self -> self
[permalink][rdoc][edit]-
self を返します。
self - other -> BigDecimal
[permalink][rdoc][edit]-
差を計算します。
- [PARAM] other:
- self から引く数を指定します。
計算結果の精度についてはbigdecimal/計算精度についてを参照してください。
- self -> BigDecimal
[permalink][rdoc][edit]-
self の符号を反転させたものを返します。
div(other) -> BigDecimal
[permalink][rdoc][edit]quo(other) -> BigDecimal
self / other -> BigDecimal
-
商を計算します。
- [PARAM] other:
- self を割る数を指定します。
詳細は Numeric#quo を参照して下さい。
計算結果の精度についてはbigdecimal/計算精度についてを参照してください。
self < other -> bool
[permalink][rdoc][edit]-
self が other より小さい場合に true を、そうでない場合に false を返します。
self <= other -> bool
[permalink][rdoc][edit]-
self が other より小さいか等しい場合に true を、そうでない場合に false を返します。
self <=> other -> -1 | 0 | 1 | nil
[permalink][rdoc][edit]-
self が other より大きい場合に 1 を、等しい場合に 0 を、小さい場合には -1 をそれぞれ返します。
self と other が比較できない場合には nil を返します。
self == other -> bool
[permalink][rdoc][edit]self === other -> bool
eql?(other) -> bool
-
self が other と等しい場合に true を、そうでない場合に false を返します。
それぞれの値は BigDecimal#coerce で変換して比較される場合があります。
require 'bigdecimal' BigDecimal('1.0') == 1.0 # => true
self > other -> bool
[permalink][rdoc][edit]-
self が other より大きい場合に true を、そうでない場合に false を返します。
self >= other -> bool
[permalink][rdoc][edit]-
self が other より大きいか等しい場合に true を、そうでない場合に false を返します。
_dump -> String
[permalink][rdoc][edit]-
BigDecimal._load で復元可能な文字列を返します。 Marshal.#dump から呼び出されます。
require 'bigdecimal' inf = BigDecimal('Infinity') # => Infinity s = Marshal.dump(inf) # => "\x04\bu:\x0FBigDecimal\x0F9:Infinity" Marshal.load(s) # => Infinity
[SEE_ALSO] BigDecimal._load, Marshal.#dump, Marshal.#load
abs -> BigDecimal
[permalink][rdoc][edit]-
self の絶対値を返します。
require 'bigdecimal' BigDecimal('5').abs.to_i # => 5 BigDecimal('-3').abs.to_i # => 3
add(other, n) -> BigDecimal
[permalink][rdoc][edit]-
和を計算します。
self + other を最大で n 桁まで計算します。計算結果の精度が n より大きいときは BigDecimal.mode で指定された方法で丸められます。
- [PARAM] other:
- self に足す数を指定します。
- [PARAM] n:
- 有効桁数を整数で指定します。0 を指定した場合は BigDecimal#+ と同じ値を返します。
- [EXCEPTION] ArgumentError:
- n に負の数を指定した場合に発生します。
[SEE_ALSO] BigDecimal#+
ceil -> Integer
[permalink][rdoc][edit]ceil(n) -> BigDecimal
-
self 以上の整数のうち、最も小さい整数を計算し、その値を返します。
- [PARAM] n:
- 小数点以下の桁数を整数で指定します。
require "bigdecimal" BigDecimal("1.23456").ceil # => 2 BigDecimal("-1.23456").ceil # => -1
以下のように引数を与えて、小数点以下 n+1 位の数字を操作することもできます。 n >= 0 なら、小数点以下 n + 1 位の数字を操作します (小数点以下を、最大 n 桁にします)。 n が負のときは小数点以上 n 桁目を操作します (小数点位置から左に少なくとも n 個の 0 が並びます)。
require "bigdecimal" BigDecimal("1.23456").ceil(4).to_f # => 1.2346 BigDecimal("15.23456").ceil(-1).to_f # => 20.0
clone -> self
[permalink][rdoc][edit]-
self を返すように、BigDecimal で定義されています。
coerce(other) -> Array
[permalink][rdoc][edit]-
self と other が同じクラスになるよう、self か other を変換し [other, self] という配列にして返します。
- [PARAM] other:
- 比較または変換するオブジェクト
BigDecimal#coerce は Ruby における強制型変換のための機能です。 BigDecimal オブジェクトとその他のオブジェクト間の各種の計算は BigDecimal#coerce の結果を元に行われます。
require "bigdecimal" a = BigDecimal("1.0") b = a / 2.0 # => 0.5e0
other に Rational オブジェクトを指定した場合は self の有効桁数を用いて変換を行います。
数値を表す文字列から BigDecimal オブジェクトに変換する機能はデフォルトでは無効になっています。必要な場合は ENABLE_NUMERIC_STRING を有効にして Ruby をコンパイルしてください。
div(other, n) -> BigDecimal
[permalink][rdoc][edit]-
商を計算します。
self / other を最大で n 桁まで計算します。計算結果の精度が n より大きいときは BigDecimal.mode で指定された方法で丸められます。
- [PARAM] other:
- self を割る数を指定します。
- [PARAM] n:
- 有効桁数を整数で指定します。省略するか 0 を指定した場合は BigDecimal#/ と同じ値を返します。
- [EXCEPTION] ArgumentError:
- n に負の数を指定した場合に発生します。
[SEE_ALSO] BigDecimal#/
divmod(n) -> [BigDecimal, BigDecimal]
[permalink][rdoc][edit]-
self を other で割った商 q と余り r を、 [q, r] という 2 要素の配列にして返します。
商は負の無限大負方向に丸められます。
- [PARAM] n:
- self を割る数を指定します。
require 'bigdecimal' a = BigDecimal("42") b = BigDecimal("9") a.divmod(b) # => [0.4e1, 0.6e1]
dup -> BigDecimal
[permalink][rdoc][edit]-
self を返すように、BigDecimal で定義されています。
exponent -> Integer
[permalink][rdoc][edit]-
self の指数部を整数値で返します。
finite? -> bool
[permalink][rdoc][edit]-
self が ∞または NaN でないときに true を返します。それ以外のときに false を返します。
fix -> BigDecimal
[permalink][rdoc][edit]-
self の整数部分を新しい BigDecimal オブジェクトにして返します。
floor -> Integer
[permalink][rdoc][edit]floor(n) -> BigDecimal
-
self 以下の最大整数を返します。
- [PARAM] n:
- 小数点以下の桁数を整数で指定します。
require "bigdecimal" BigDecimal("1.23456").floor # => 1 BigDecimal("-1.23456").floor # => -2
以下のように引数 n を与えることもできます。 n >= 0 なら、小数点以下 n + 1 位の数字を操作します (小数点以下を、最大 n 桁にします)。 n が負のときは小数点以上 n 桁目を操作します (小数点位置から左に少なくとも n 個の 0 が並びます)。
require "bigdecimal" BigDecimal("1.23456").floor(4).to_f # => 1.2345 BigDecimal("15.23456").floor(-1).to_f # => 10.0
frac -> BigDecimal
[permalink][rdoc][edit]-
self の小数部分を新しい BigDecimal オブジェクトにして返します。
hash -> Integer
[permalink][rdoc][edit]-
self のハッシュ値を返します。
符号、小数部、指数部が同じ場合に同じハッシュ値を返します。
infinite? -> 1 | -1 | nil
[permalink][rdoc][edit]-
self が +∞のときに 1 、-∞のときに-1、それ以外のときに nil を返します。
inspect -> String
[permalink][rdoc][edit]-
BigDecimal オブジェクトを表す文字列を返します。
require "bigdecimal" BigDecimal("1234.5678").inspect # => "0.12345678e4"
mult(other, n) -> BigDecimal
[permalink][rdoc][edit]-
積を計算します。
self * other を最大で n 桁まで計算します。計算結果の精度が n より大きいときは BigDecimal.mode で指定された方法で丸められます。
- [PARAM] other:
- self に掛ける数を指定します。
- [PARAM] n:
- 有効桁数を整数で指定します。0 を指定した場合は BigDecimal#* と同じ値を返します。
- [EXCEPTION] ArgumentError:
- n に負の数を指定した場合に発生します。
[SEE_ALSO] BigDecimal#*
nan? -> bool
[permalink][rdoc][edit]-
self が NaN のときに true を返します。それ以外のときに false を返します。
nonzero? -> self | nil
[permalink][rdoc][edit]-
self が 0 以外のときに self を返します。0 のときに nil を返します。
require "bigdecimal" BigDecimal("0").nonzero? # => nil BigDecimal("1").nonzero? # => 0.1e1
precs -> [Integer, Integer]
[permalink][rdoc][edit]-
self の有効数字と最大有効数字の配列を返します。
remainder(n) -> BigDecimal
[permalink][rdoc][edit]-
self を n で割った余りを返します。
- [PARAM] n:
- self を割る数を指定します。
require 'bigdecimal' x = BigDecimal((2**100).to_s) x.remainder(3).to_i # => 1 (-x).remainder(3).to_i # => -1 x.remainder(-3).to_i # => 1 (-x).remainder(-3).to_i # => -1
戻り値は self と同じ符号になります。これは BigDecimal#% とは異なる点に注意してください。詳細は Numeric#%、 Numeric#remainder を参照して下さい。
round -> Integer
[permalink][rdoc][edit]round(n) -> BigDecimal
round(n, b) -> BigDecimal
-
クラスメソッド BigDecimal.mode(BigDecimal::ROUND_MODE,flag) で指定した BigDecimal::ROUND_MODE に従って丸め操作を実行します。
- [PARAM] n:
- 小数点以下の桁数を整数で指定します。
- [PARAM] b:
- 丸め処理の方式として、BigDecimal.mode の第 1 引数と同じ値を指定します。
BigDecimal.mode(BigDecimal::ROUND_MODE,flag) で何も指定せず、かつ、引数を指定しない場合は「小数点以下第一位の数を四捨五入して整数(BigDecimal 値)」にします。
require "bigdecimal" BigDecimal("1.23456").round # => 1 BigDecimal("-1.23456").round # => -1
以下のように引数を与えて、小数点以下 n+1 位の数字を操作することもできます。 n が正の時は、小数点以下 n+1 位の数字を丸めます(小数点以下を、最大 n 桁にします)。 n が負のときは小数点以上 n 桁目を丸めます(小数点位置から左に少なくとも n 個の 0 が並びます)。
require "bigdecimal" BigDecimal("1.23456").round(4).to_f # => 1.2346 BigDecimal("15.23456").round(-1).to_f # => 20.0
2番目の引数を指定すると、BigDecimal.mode の指定を無視して、指定された方法で丸め操作を実行します。
require "bigdecimal" BigDecimal("1.23456").round(3,BigDecimal::ROUND_HALF_EVEN).to_f # => 1.235 require "bigdecimal" BigDecimal("1.23356").round(3,BigDecimal::ROUND_HALF_EVEN).to_f # => 1.234
[SEE_ALSO] BigDecimal.mode
save_exception_mode { ... } -> object
[permalink][rdoc][edit]-
例外処理に関する BigDecimal.mode の設定を保存してブロックを評価します。ブロック中で変更した設定はブロックの評価後に復元されます。
ブロックの評価結果を返します。
save_limit { ... } -> object
[permalink][rdoc][edit]-
現在の BigDecimal.limit の設定を保存してブロックを評価します。ブロック中で変更した設定はブロックの評価後に復元されます。
ブロックの評価結果を返します。
save_rounding_mode { ... } -> object
[permalink][rdoc][edit]-
丸め処理に関する BigDecimal.mode の設定を保存してブロックを評価します。ブロック中で変更した設定はブロックの評価後に復元されます。
ブロックの評価結果を返します。
sign -> -3 | -2 | -1 | 0 | 1 | 2 | 3
[permalink][rdoc][edit]-
自身の符号等の性質に応じて、Integer を返します。
符号が正であれば正の整数を返し、負であれば負の整数を返し、NaN であれば 0 を返します。
NaN であれば、 0。 BigDecimal::SIGN_NaN と同じです。 +0 であれば、 1。 BigDecimal::SIGN_POSITIVE_ZERO と同じです。 -0 であれば、-1。 BigDecimal::SIGN_NEGATIVE_ZERO と同じです。 有限の正の値 であれば、 2。 BigDecimal::SIGN_POSITIVE_FINITE と同じです。 有限の負の値 であれば、-2。 BigDecimal::SIGN_NEGATIVE_FINITE と同じです。 +Infinity であれば、 3。 BigDecimal::SIGN_POSITIVE_INFINITE と同じです。 -Infinity であれば、-3。 BigDecimal::SIGN_NEGATIVE_INFINITE と同じです。
BigDecimal は、 0 であっても、+ か - の符号を持つことに注意して下さい。 (「bigdecimal/内部構造」を参照)
require "bigdecimal" p BigDecimal("NaN").sign # => 0 p BigDecimal("0").sign # => 1 p BigDecimal("100").sign # => 2 p BigDecimal("Infinity").sign # => 3 p BigDecimal("-0").sign # => -1 p BigDecimal("-5").sign # => -2 p BigDecimal("-Infinity").sign # => -3 p BigDecimal("0").sign == BigDecimal::SIGN_POSITIVE_ZERO # => true
split -> [Integer, String, Integer, Integer]
[permalink][rdoc][edit]-
BigDecimal 値を 0.xxxxxxx*10**n と表現したときに、符号 (NaNのときは 0、それ以外は+1か-1になります)、仮数部分の文字列("xxxxxxx")と、基数(10)、更に指数 n を配列で返します。
require "bigdecimal" a = BigDecimal("3.14159265") f, x, y, z = a.split
とすると、f = 1、x = "314159265"、y = 10、z = 1 になります。従って、以下のようにする事で Float に変換することができます。
s = "0."+x b = f*(s.to_f)*(y**z)
[SEE_ALSO] BigDecimal#to_f
sqrt(n) -> BigDecimal
[permalink][rdoc][edit]-
self の有効桁 n 桁の平方根 (n の平方根ではありません) をニュートン法で計算します。
- [PARAM] n:
- 有効桁数を整数で指定します。
- [EXCEPTION] ArgumentError:
- n に負の数を指定した場合に発生します。
sub(other, n) -> BigDecimal
[permalink][rdoc][edit]-
差を計算します。
self - other を最大で n 桁まで計算します。計算結果の精度が n より大きいときは BigDecimal.mode で指定された方法で丸められます。
- [PARAM] other:
- self から引く数を指定します。
- [PARAM] n:
- 有効桁数を整数で指定します。0 を指定した場合は BigDecimal#- と同じ値を返します。
- [EXCEPTION] ArgumentError:
- n に負の数を指定した場合に発生します。
[SEE_ALSO] BigDecimal#-
to_f -> Float
[permalink][rdoc][edit]-
self の近似値を表す Float オブジェクトに変換します。
仮数部や指数部の情報が必要な場合は、BigDecimal#split メソッドを利用してください。
[SEE_ALSO] BigDecimal#split
to_i -> Integer
[permalink][rdoc][edit]to_int -> Integer
-
self の小数点以下を切り捨てて整数に変換します。
- [EXCEPTION] FloatDomainError:
- self が無限大や NaN であった場合に発生します。
to_r -> Rational
[permalink][rdoc][edit]-
self を Rational オブジェクトに変換します。
to_s -> String
[permalink][rdoc][edit]to_s(n) -> String
-
self を文字列に変換します (デフォルトは "0.xxxxxen" の形になります)。
- [PARAM] n:
- 出力の形式を Integer または String で指定します。
require "bigdecimal" BigDecimal("1.23456").to_s # ==> "0.123456e1"
引数 n に正の整数が指定されたときは、小数点で分けられる左右部分を、それぞれ n 桁毎に空白で区切ります。
require "bigdecimal" BigDecimal("0.1234567890123456789").to_s(10) # => "0.1234567890 123456789e0"
引数 n に正の整数を表す文字列を指定することもできます。
require "bigdecimal" BigDecimal("0.1234567890123456789").to_s("10") # => "0.1234567890 123456789e0"
文字列の最初に '+' または ' ' を付けると、値が正の場合先頭に '+' または ' ' が付きます。負の場合は常に '-' が付きます。
require "bigdecimal" BigDecimal("0.123456").to_s(" 3") # => " 0.123 456e0" BigDecimal("0.123456").to_s("+3") # => "+0.123 456e0" BigDecimal("-0.123456").to_s("3") # => "-0.123 456e0"
さらに文字列の最後に指数形式 ('E' または 'e') か指数を使わない形式 ('F' または 'f') かを指定出来ます。デフォルトは指数形式です。
require "bigdecimal" BigDecimal("123.456").to_s("e") # => "0.123456e3" BigDecimal("123.456").to_s("E") # => "0.123456e3" # (大文字で指定しても出力は 'e' になる) BigDecimal("123.456").to_s("F") # => "123.456" BigDecimal("1234.5678").to_s("3F") # => "123 4.567 8"
truncate -> Integer
[permalink][rdoc][edit]truncate(n) -> BigDecimal
-
小数点以下の数を切り捨てて整数にします。
- [PARAM] n:
- 小数点以下の桁数を整数で指定します。
以下のように引数を与えて、小数点以下 n+1 位の数字を操作することもできます。 n が正の時は、小数点以下 n+1 位の数字を切り捨てます (小数点以下を、最大 n 桁にします)。 n が負のときは小数点以上 n 桁目を操作します (小数点位置から左に少なくとも n 個の 0 が並びます)。
require "bigdecimal" BigDecimal("1.23456").truncate(4).to_f # => 1.2345 BigDecimal("15.23456").truncate(-1).to_f # => 10.0
zero? -> bool
[permalink][rdoc][edit]-
self が 0 のときに true を返します。それ以外のときに false を返します。
require "bigdecimal" BigDecimal("0").zero? # => true BigDecimal("1").zero? # => false
定数
BASE -> Integer
[permalink][rdoc][edit]-
ライブラリ内部で使用します。
EXCEPTION_ALL -> Integer
[permalink][rdoc][edit]-
BigDecimal の計算において例外を発生させるかどうかを設定、確認する際の値を返します。
以下の例外全てが対象です。
- BigDecimal::EXCEPTION_INFINITY
- BigDecimal::EXCEPTION_NaN
- BigDecimal::EXCEPTION_OVERFLOW
- BigDecimal::EXCEPTION_UNDERFLOW
- BigDecimal::EXCEPTION_ZERODIVIDE
BigDecimal.mode の第 1 引数に指定します。
EXCEPTION_INFINITY -> Integer
[permalink][rdoc][edit]-
BigDecimal の計算結果が無限大になった場合に例外を発生させるかどうかを設定、確認する際の値を返します。
BigDecimal.mode の第 1 引数に指定します。
EXCEPTION_NaN -> Integer
[permalink][rdoc][edit]-
BigDecimal の計算結果が NaN になった場合に例外を発生させるかどうかを設定、確認する際の値を返します。
BigDecimal.mode の第 1 引数に指定します。
EXCEPTION_OVERFLOW -> Integer
[permalink][rdoc][edit]-
BigDecimal の計算結果の指数部がオーバーフローした場合に例外を発生させるかどうかを設定、確認する際の値を返します。
BigDecimal.mode の第 1 引数に指定します。
EXCEPTION_UNDERFLOW -> Integer
[permalink][rdoc][edit]-
BigDecimal の計算結果の指数部がアンダーフローした場合に例外を発生させるかどうかを設定、確認する際の値を返します。
BigDecimal.mode の第 1 引数に指定します。
EXCEPTION_ZERODIVIDE -> Integer
[permalink][rdoc][edit]-
BigDecimal に 0 による割り算を実行した場合に例外を発生させるかどうかを設定、確認する際の値を返します。
BigDecimal.mode の第 1 引数に指定します。
INFINITY -> BigDecimal
[permalink][rdoc][edit]-
正の無限大を表す BigDecimal オブジェクトを返します。
NAN -> BigDecimal
[permalink][rdoc][edit]-
NaN を表す BigDecimal オブジェクトを返します。
ROUND_CEILING -> Integer
[permalink][rdoc][edit]-
BigDecimal の計算結果の丸め処理で数値の大きい方に繰り上げるかどうかを設定、確認する際の値を返します。
BigDecimal.mode の第 2 引数に指定します。
ROUND_DOWN -> Integer
[permalink][rdoc][edit]-
BigDecimal の計算結果の丸め処理で全て切り捨てるかどうかを設定、確認する際の値を返します。
BigDecimal.mode の第 2 引数に指定します。
ROUND_FLOOR -> Integer
[permalink][rdoc][edit]-
BigDecimal の計算結果の丸め処理で数値の小さい方に繰り下げるかどうかを設定、確認する際の値を返します。
BigDecimal.mode の第 2 引数に指定します。
ROUND_HALF_DOWN -> Integer
[permalink][rdoc][edit]-
BigDecimal の計算結果の丸め処理で五捨六入するかどうかを設定、確認する際の値を返します。
BigDecimal.mode の第 2 引数に指定します。
ROUND_HALF_EVEN -> Integer
[permalink][rdoc][edit]-
BigDecimal の計算結果の丸め処理で四捨六入するかどうかを設定、確認する際の値を返します。5の時は上位1桁が奇数の時のみ繰り上げます (Banker's rounding)。
BigDecimal.mode の第 2 引数に指定します。
ROUND_HALF_UP -> Integer
[permalink][rdoc][edit]-
BigDecimal の計算結果の丸め処理で四捨五入するかどうかを設定、確認する際の値を返します。
BigDecimal.mode の第 2 引数に指定します。
ROUND_MODE -> Integer
[permalink][rdoc][edit]-
BigDecimal の計算結果の丸め処理を設定、確認する際の値を返します。
BigDecimal.mode の第 1 引数に指定します。詳細については BigDecimal.mode を参照してください。
ROUND_UP -> Integer
[permalink][rdoc][edit]-
BigDecimal の計算結果の丸め処理で全て切り上げするかどうかを設定、確認する際の値を返します。
BigDecimal.mode の第 2 引数に指定します。
SIGN_NEGATIVE_FINITE -> Integer
[permalink][rdoc][edit]-
負の値に対応する BigDecimal#sign の値を返します。
SIGN_NEGATIVE_INFINITE -> Integer
[permalink][rdoc][edit]-
負の無限大に対応する BigDecimal#sign の値を返します。
SIGN_NEGATIVE_ZERO -> Integer
[permalink][rdoc][edit]-
負の 0 に対応する BigDecimal#sign の値を返します。
SIGN_NaN -> Integer
[permalink][rdoc][edit]-
NaN に対応する BigDecimal#sign の値を返します。
SIGN_POSITIVE_FINITE -> Integer
[permalink][rdoc][edit]-
正の値に対応する BigDecimal#sign の値を返します。
SIGN_POSITIVE_INFINITE -> Integer
[permalink][rdoc][edit]-
正の無限大に対応する BigDecimal#sign の値を返します。
SIGN_POSITIVE_ZERO -> Integer
[permalink][rdoc][edit]-
正の 0 に対応する BigDecimal#sign の値を返します。
VERSION -> String
[permalink][rdoc][edit]-
bigdecimal ライブラリのバージョンを文字列で返します。