diff --git a/lib/bigdecimal/util.rb b/lib/bigdecimal/util.rb index 7f2232db..87164ae0 100644 --- a/lib/bigdecimal/util.rb +++ b/lib/bigdecimal/util.rb @@ -88,13 +88,7 @@ class BigDecimal < Numeric # d.to_digits # => "3.14" # def to_digits - if self.nan? || self.infinite? || self.zero? - self.to_s - else - i = self.to_i.to_s - _,f,_,z = self.frac.split - i + "." + ("0"*(-z)) + f - end + to_s("F") end # call-seq: diff --git a/test/bigdecimal/test_bigdecimal_util.rb b/test/bigdecimal/test_bigdecimal_util.rb index 67693935..16e14c4a 100644 --- a/test/bigdecimal/test_bigdecimal_util.rb +++ b/test/bigdecimal/test_bigdecimal_util.rb @@ -10,6 +10,13 @@ def test_BigDecimal_to_d assert_same(x, x.to_d) end + def test_BigDecimal_to_digits + assert_equal("3.14", BigDecimal("3.14").to_digits) + assert_equal("-3.14", BigDecimal("-3.14").to_digits) + assert_equal("-0.5", BigDecimal("-0.5").to_digits) + assert_equal("-0.05", BigDecimal("-0.05").to_digits) + end + def test_Integer_to_d assert_equal(BigDecimal(1), 1.to_d) assert_equal(BigDecimal(2<<100), (2<<100).to_d)