summaryrefslogtreecommitdiff
path: root/ext/bigdecimal/bigdecimal.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/bigdecimal/bigdecimal.c')
-rw-r--r--ext/bigdecimal/bigdecimal.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/bigdecimal/bigdecimal.c b/ext/bigdecimal/bigdecimal.c
index 63de77c..72c7b34 100644
--- a/ext/bigdecimal/bigdecimal.c
+++ b/ext/bigdecimal/bigdecimal.c
@@ -2736,12 +2736,15 @@ rb_uint64_convert_to_BigDecimal(uint64_t uval, RB_UNUSED_VAR(size_t digs), int r
vp->exponent = len;
VpSetSign(vp, 1);
- size_t i;
+ size_t i, ntz = 0;
for (i = 0; i < len; ++i) {
DECDIG r = uval % BASE;
vp->frac[len - i - 1] = r;
+ if (r == 0) ++ntz;
uval /= BASE;
}
+
+ vp->Prec -= ntz;
}
return BigDecimal_wrap_struct(obj, vp);