From 4cbf09d1fe858f39bd091a6cbe59dcc56ce463aa Mon Sep 17 00:00:00 2001 From: shigek Date: Mon, 28 Jul 2003 02:56:43 +0000 Subject: Bug fix from Javier Goizueta. ROUND_MODE & round changed(source & docs). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4187 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/bigdecimal/bigdecimal_ja.html | 59 ++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 26 deletions(-) (limited to 'ext/bigdecimal/bigdecimal_ja.html') diff --git a/ext/bigdecimal/bigdecimal_ja.html b/ext/bigdecimal/bigdecimal_ja.html index f78d63a9b6..31e852bd02 100644 --- a/ext/bigdecimal/bigdecimal_ja.html +++ b/ext/bigdecimal/bigdecimal_ja.html @@ -166,22 +166,26 @@ EXCEPTION_NaN [丸め処理指定]

計算途中の丸め操作の指定ができます。

-f = BigDecimal::mode(BigDecimal::COMP_MODE,flag) +f = BigDecimal::mode(BigDecimal::ROUND_MODE,flag)
の形式で指定します。
ここで、flag は以下(括弧内は対応するインスタンスメソッド)の一つを指定します。 - - - - - + + + + + + + +
COMP_MODE_TRUNCATE全て切り捨てます(truncate)。
COMP_MODE_ROUND四捨五入します(round、デフォルト)。
COMP_MODE_CEIL数値の大きい方に繰り上げます(ceil)。
COMP_MODE_FLOOR数値の小さい方に繰り下げます(floor)。
COMP_MODE_EVEN四捨六入します。5の時は上位1桁が奇数の時のみ繰り上げます(Banker's rounding)。
ROUND_UP全て切り上げます。
ROUND_DOWN全て切り捨てます(truncate)。
ROUND_HALF_UP四捨五入します(デフォルト)。
ROUND_HALF_DOWN五捨六入します。
ROUND_HALF_EVEN四捨六入します。5の時は上位1桁が奇数の時のみ繰り上げます(Banker's rounding)。
ROUND_CEILING数値の大きい方に繰り上げます(ceil)。
ROUND_FLOOR数値の小さい方に繰り下げます(floor)。
-戻り値は指定前の flag の値です。 -引数に正しくないものが指定された場合は nil が返ります。
+戻り値は指定後の flag の値です。 +引数に数値以外が指定された場合は nil が返ります。正しくない ROUND_MODE が指定されたときは +無視され、現状の ROUND_MODE が返ります。
mode メソッドでは丸め操作の位置をユーザが指定することはできません。 丸め操作と位置を自分で制御したい場合は truncate/round/ceil/floor や -add/sub/mult といったインスタンスメソッドを使用して下さい。 +add/sub/mult/div といったインスタンスメソッドを使用して下さい。
  • limit([n])
  • 生成されるBigDecimalオブジェクトの最大桁数をn桁に制限します。 @@ -192,7 +196,7 @@ n 丸め処理が実行されます。 ただし、実際には n より若干大きい 桁数が確保されます。また、limit による桁数制限は(無制限を除いて)、 -インスタンスメソッド (truncate/round/ceil/floor/add/sub/mult) より +インスタンスメソッド (truncate/round/ceil/floor/add/sub/mult/div) より 優先されるので注意が必要です。
    mf = BigDecimal::limit(n)
    @@ -296,8 +300,8 @@ c = BigDecimal("-1.23456").floor # ==> -2 n>=0 なら、小数点以下 n+1 位の数字を操作します(少数点以下を、最大 n 桁にします)。
    n が負のときは小数点以上 n 桁目を操作します(小数点位置から左に少なくとも n 個の 0 が並びます)。
    - c = BigDecimal::new("1.23456").floor(4)   #  ==> 1.2345
    - c = BigDecimal::new("15.23456").floor(-1) #  ==> 10.0
    + c = BigDecimal("1.23456").floor(4)   #  ==> 1.2345
    + c = BigDecimal("15.23456").floor(-1) #  ==> 10.0
     
    @@ -313,32 +317,35 @@ c = BigDecimal("-1.23456").ceil # ==> -1 n>=0 なら、小数点以下 n+1 位の数字を操作します(少数点以下を、最大 n 桁にします)。
    n が負のときは小数点以上 n 桁目をを操作します(小数点位置から左に少なくとも n 個の 0 が並びます)。
    - c = BigDecimal::new("1.23456").ceil(4)   # ==> 1.2346
    - c = BigDecimal::new("15.23456").ceil(-1) # ==> 20.0
    + c = BigDecimal("1.23456").ceil(4)   # ==> 1.2346
    + c = BigDecimal("15.23456").ceil(-1) # ==> 20.0
     
  • round[(n[,b])]
  • c = a.round
    -小数点以下第一位の数を四捨五入して整数(BigDecimal 値)にします。
    + +クラスメソッド BigDecimal::mode(BigDecimal::ROUND_MODE,flag) で指定した +ROUND_MODE に従って丸め操作を実行します。 +BigDecimal::mode(BigDecimal::ROUND_MODE,flag) で何も指定せず、かつ、引数 +を指定しない場合は「小数点以下第一位の数を四捨五入して整数(BigDecimal 値)」にします。
      c = BigDecimal("1.23456").round  #  ==> 1
      c = BigDecimal("-1.23456").round #  ==> -1
     
    以下のように引数を与えて、小数点以下 n+1 位の数字を操作することもできます。
    -n が正の時は、小数点以下 n+1 位の数字を四捨五入します(少数点以下を、最大 n 桁にします)。
    -n が負のときは小数点以上 n 桁目をを操作します(小数点位置から左に少なくとも n 個の 0 が並びます)。 +n が正の時は、小数点以下 n+1 位の数字を丸めます(少数点以下を、最大 n 桁にします)。
    +n が負のときは小数点以上 n 桁目を丸めます(小数点位置から左に少なくとも n 個の 0 が並びます)。
    -c = BigDecimal::new("1.23456").round(4)   #  ==> 1.2346
    -c = BigDecimal::new("15.23456").round(-1) #  ==> 20.0
    +c = BigDecimal("1.23456").round(4)   #  ==> 1.2346
    +c = BigDecimal("15.23456").round(-1) #  ==> 20.0
     
    -2番目の引数(デフォルトは 0)にゼロ以外を指定すると、いわゆる Banker's rounding になります。
    - Banker's rounding とは、四捨五入する数字を p として、p < 5 なら切り捨て p > 5 なら切り上げ、 -p がちょうど5のときだけは切り上げ先の数字+1が偶数になるときだけ切り上げます。 +2番目の引数を指定すると、BigDecimal#mode の指定を無視して、指定された方法で +丸め操作を実行します。
    -c = BigDecimal::new("1.23456").round(3,1)   #  ==> 1.234
    -c = BigDecimal::new("1.23356").round(3,1)   #  ==> 1.234
    +c = BigDecimal("1.23456").round(3,BigDecimal::ROUND_HALF_EVEN)   #  ==> 1.234
    +c = BigDecimal("1.23356").round(3,BigDecimal::ROUND_HALF_EVEN)   #  ==> 1.234
     
    @@ -349,8 +356,8 @@ c = a.truncate
    n が正の時は、小数点以下 n+1 位の数字を切り捨てます(少数点以下を、最大 n 桁にします)。 n が負のときは小数点以上 n 桁目をを操作します(小数点位置から左に少なくとも n 個の 0 が並びます)。
    -c = BigDecimal::new("1.23456").truncate(4)   #  ==> 1.2345
    -c = BigDecimal::new("15.23456").truncate(-1) #  ==> 10.0
    +c = BigDecimal("1.23456").truncate(4)   #  ==> 1.2345
    +c = BigDecimal("15.23456").truncate(-1) #  ==> 10.0
     
    -- cgit v1.2.3