summaryrefslogtreecommitdiff
path: root/test/bigdecimal
diff options
context:
space:
mode:
authorKenta Murata <mrkn@mrkn.jp>2021-01-13 10:28:23 +0900
committerKenta Murata <mrkn@mrkn.jp>2021-01-13 11:49:18 +0900
commita5b4b806de3b130348a92aa3306fbb9318efb762 (patch)
treef4786635a2c3ba9b7c98588542f60264add5b70d /test/bigdecimal
parent30f13164011dd876fd95a0e3fcd7c1224c4e04b5 (diff)
[ruby/bigdecimal] Allow digits=0 in BigDecimal(flt) and Float#to_d
Using dtoa of mode=0, we can determine the number of digits in decimal that is necessary to represent the given Float number without errors. This change permits digits=0 in BigDecimal(flt) and Float#to_d, and these methods use dtoa of mode=0 when the given digits is 0. Internal implicit conversion from Float also uses digits=0. [Fix GH-70] https://github.com/ruby/bigdecimal/commit/2dbe170e35
Diffstat (limited to 'test/bigdecimal')
-rw-r--r--test/bigdecimal/test_bigdecimal.rb2
-rw-r--r--test/bigdecimal/test_bigdecimal_util.rb8
2 files changed, 7 insertions, 3 deletions
diff --git a/test/bigdecimal/test_bigdecimal.rb b/test/bigdecimal/test_bigdecimal.rb
index e8fd85a..0063fb9 100644
--- a/test/bigdecimal/test_bigdecimal.rb
+++ b/test/bigdecimal/test_bigdecimal.rb
@@ -917,6 +917,7 @@ class TestBigDecimal < Test::Unit::TestCase
def test_mult_with_float
assert_kind_of(BigDecimal, BigDecimal("3") * 1.5)
+ assert_equal(BigDecimal("64.4"), BigDecimal(1) * 64.4)
end
def test_mult_with_rational
@@ -955,6 +956,7 @@ class TestBigDecimal < Test::Unit::TestCase
def test_div_with_float
assert_kind_of(BigDecimal, BigDecimal("3") / 1.5)
+ assert_equal(BigDecimal("0.5"), BigDecimal(1) / 2.0)
end
def test_div_with_rational
diff --git a/test/bigdecimal/test_bigdecimal_util.rb b/test/bigdecimal/test_bigdecimal_util.rb
index 9c6973d..ffd4c5f 100644
--- a/test/bigdecimal/test_bigdecimal_util.rb
+++ b/test/bigdecimal/test_bigdecimal_util.rb
@@ -19,11 +19,11 @@ class TestBigDecimalUtil < Test::Unit::TestCase
def test_Float_to_d_without_precision
delta = 1.0/10**(Float::DIG+1)
- assert_in_delta(BigDecimal(0.5, Float::DIG+1), 0.5.to_d, delta)
- assert_in_delta(BigDecimal(355.0/113.0, Float::DIG+1), (355.0/113.0).to_d, delta)
+ assert_in_delta(BigDecimal(0.5, 0), 0.5.to_d, delta)
+ assert_in_delta(BigDecimal(355.0/113.0, 0), (355.0/113.0).to_d, delta)
assert_equal(9.05, 9.05.to_d.to_f)
- assert_equal("9.050000000000001", 9.05.to_d.to_s('F'))
+ assert_equal("9.05", 9.05.to_d.to_s('F'))
assert_equal(Math::PI, Math::PI.to_d.to_f)
@@ -34,6 +34,8 @@ class TestBigDecimalUtil < Test::Unit::TestCase
assert_raise(TypeError) { 0.3.to_d(false) }
assert(1.1.to_d.frozen?)
+
+ assert_equal(BigDecimal("999_999.9999"), 999_999.9999.to_d)
end
def test_Float_to_d_with_precision