[前][次][番号順一覧][スレッド一覧]

ruby-changes:20705

From: mrkn <ko1@a...>
Date: Sat, 30 Jul 2011 13:59:51 +0900 (JST)
Subject: [ruby-changes:20705] mrkn:r32753 (ruby_1_9_3): * ext/bigdecimal/lib/bigdecimal/util.rb (Rational#to_d):

mrkn	2011-07-30 13:57:45 +0900 (Sat, 30 Jul 2011)

  New Revision: 32753

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=32753

  Log:
    * ext/bigdecimal/lib/bigdecimal/util.rb (Rational#to_d):
      revive zero and implicit precision support as a deprecated feature.
    * test/bigdecimal/test_bigdecimal_util.rb: modify a test for the above
      change.
    * NEWS: describes the above change.

  Modified files:
    branches/ruby_1_9_3/ChangeLog
    branches/ruby_1_9_3/NEWS
    branches/ruby_1_9_3/ext/bigdecimal/lib/bigdecimal/util.rb
    branches/ruby_1_9_3/test/bigdecimal/test_bigdecimal_util.rb

Index: ruby_1_9_3/ChangeLog
===================================================================
--- ruby_1_9_3/ChangeLog	(revision 32752)
+++ ruby_1_9_3/ChangeLog	(revision 32753)
@@ -1,3 +1,13 @@
+Sat Jul 30 13:52:00 2011  Kenta Murata  <mrkn@m...>
+
+	* ext/bigdecimal/lib/bigdecimal/util.rb (Rational#to_d):
+	  revive zero and implicit precision support as a deprecated feature.
+
+	* test/bigdecimal/test_bigdecimal_util.rb: modify a test for the above
+	  change.
+
+	* NEWS: describes the above change.
+
 Sat Jul 30 10:58:10 2011  KOSAKI Motohiro  <kosaki.motohiro@g...>
 
 	* vm.c (th_init): preallocate alternative stack.
Index: ruby_1_9_3/ext/bigdecimal/lib/bigdecimal/util.rb
===================================================================
--- ruby_1_9_3/ext/bigdecimal/lib/bigdecimal/util.rb	(revision 32752)
+++ ruby_1_9_3/ext/bigdecimal/lib/bigdecimal/util.rb	(revision 32753)
@@ -17,7 +17,7 @@
 
 class Float < Numeric
   # call-seq:
-  #     flt.to_d  -> bigdecimal
+  #     flt.to_d(precision=nil)  -> bigdecimal
   #
   # Convert +flt+ to a BigDecimal and return it.
   #
@@ -83,11 +83,12 @@
 
 class Rational < Numeric
   # call-seq:
-  #   r.to_d        -> bigdecimal
   #   r.to_d(sig)   -> bigdecimal
   #
   # Converts a Rational to a BigDecimal. Takes an optional parameter +sig+ to
   # limit the amount of significant digits.
+  # If a negative precision is given, raise ArgumentError.
+  # The zero precision and implicit precision is deprecated.
   #
   #   r = (22/7.0).to_r
   #   # => (7077085128725065/2251799813685248)
@@ -95,9 +96,12 @@
   #   # => #<BigDecimal:1a52bd8,'0.3142857142 8571427937 0154144999 105E1',45(63)>
   #   r.to_d(3)
   #   # => #<BigDecimal:1a44d08,'0.314E1',18(36)>
-  def to_d(precision)
-    if precision <= 0
+  def to_d(precision=0)
+    if precision < 0
       raise ArgumentError, "negative precision"
+    elsif precision == 0
+      warn "zero and implicit precision is deprecated."
+      precision = BigDecimal.double_fig*2+1
     end
     num = self.numerator
     BigDecimal(num).div(self.denominator, precision)
Index: ruby_1_9_3/NEWS
===================================================================
--- ruby_1_9_3/NEWS	(revision 32752)
+++ ruby_1_9_3/NEWS	(revision 32753)
@@ -122,8 +122,14 @@
   * Rational#to_d raises ArgumentError when passing zero or negative
     precision.
 
-  * Rational#to_d requires a precision.  It is an incompatible change.
+  * Rational#to_d
 
+    * Zero and an implicit precision is deprecated.
+      This feature is removed at the next release of bigdecimal.
+
+    * A negative precision isn't supported.
+      Be careful it is an incompatible change.
+
 * date
 
   * Accepts flonum explicitly with limitations.
Index: ruby_1_9_3/test/bigdecimal/test_bigdecimal_util.rb
===================================================================
--- ruby_1_9_3/test/bigdecimal/test_bigdecimal_util.rb	(revision 32752)
+++ ruby_1_9_3/test/bigdecimal/test_bigdecimal_util.rb	(revision 32753)
@@ -34,7 +34,7 @@
   end
 
   def test_Rational_to_d_with_zero_precision
-    assert_raise(ArgumentError) { 355.quo(113).to_d(0) }
+    assert_equal(355.quo(113).to_d, 355.quo(113).to_d(BigDecimal.double_fig*2+1))
   end
 
   def test_Rational_to_d_with_negative_precision

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]