From 0a8622fff0f1244629945c944b3d2188fe855cb6 Mon Sep 17 00:00:00 2001 From: Jonathan Neuhauser Date: Fri, 6 Sep 2024 11:39:50 +0200 Subject: [PATCH] Correct number of significant digits for cases like 1.0000001 --- src/impl/num/process.typ | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/impl/num/process.typ b/src/impl/num/process.typ index 374b8cc..d176ea9 100644 --- a/src/impl/num/process.typ +++ b/src/impl/num/process.typ @@ -207,9 +207,15 @@ } let len = integer.len() + decimal.len() + let check-add-zeros = false if options.round-precision < len { - (integer, decimal) = round-digits(integer, decimal, options.round-precision + if integer.len() < options.round-precision { decimal.position(non-zero-integer-regex) }) - } else if len < options.round-precision and options.round-pad { + (integer, decimal) = round-digits(integer, decimal, options.round-precision) + // Do we have too few significant digits now? (e.g. round 1.0009 to three + // significant digits -> return 1.00 instead of 1) + let len = integer.len() + decimal.len() + check-add-zeros = true + } + if len < options.round-precision and (check-add-zeros or options.round-pad) { decimal += "0" * (options.round-precision - len) } } @@ -310,4 +316,4 @@ } return (options, sign, mantissa, exponent, power, uncertainty) -} \ No newline at end of file +}