瀏覽代碼

Fix bug in bigdecimal constructor for >9 digits after the decimal point

Sam Jaffe 7 年之前
父節點
當前提交
10722b64d0
共有 2 個文件被更改,包括 3 次插入3 次删除
  1. 1 1
      src/bigdecimal.cpp
  2. 2 2
      test/bigdecimal_test.cpp

+ 1 - 1
src/bigdecimal.cpp

@@ -81,7 +81,7 @@ is_negative(number[0] == '-') {
     number = p + 1;
     set_scale(int32_t(strlen(number)));
     size_t elems = size_t(scale()/SEG_DIGITS);
-    data.resize(elems+data.size());
+    data.insert(data.begin(), elems, 0);
     for (size_t idx = elems; idx > 0; --idx) {
       read(data[idx-1], number, SEG_DIGITS);
     }

+ 2 - 2
test/bigdecimal_test.cpp

@@ -15,7 +15,7 @@ TEST(BigDecimalTest, ConstructIntegerAsDecimal) {
 
 TEST(BigDecimalTest, ConstructDecimal) {
   EXPECT_THAT(math::bigdecimal("1000.10").to_string(), "1000.10");
-  EXPECT_THAT(math::bigdecimal("1000.01").to_string(), "1000.01");
+  EXPECT_THAT(math::bigdecimal("1000.0000000001").to_string(), "1000.0000000001");
 }
 
 TEST(BigDecimalTest, ConstructIntWithScaleAndStep) {
@@ -148,7 +148,7 @@ INSTANTIATE_TEST_CASE_P(BigDecimal, DivisionScaleTest,
 INSTANTIATE_TEST_CASE_P(BigDecimal, EqTest,
                         testing::Values(BigDecPair{{  0}, {  0,  4}},
                                         BigDecPair{{100}, {100, -2}},
-                                        BigDecPair{{1000000000}, {1000000000, -9}},
+                                        BigDecPair{{1000000000, -4}, {1000000000, -9}},
                                         BigDecPair{{"0.1", 1}, {"0.10", 2}}));
 
 #pragma clang diagnostic pop