values close to zero don't round nicely with bigdecs

This commit is contained in:
gnembon committed 2020-12-13 06:07:13 -04:00
1 parent 97971322e5
commit 34ee6784a4
1 file changed
+2
@@ -15,6 +15,7 @@ import java.math.RoundingMode;
import java.util.Locale; import java.util.Locale;
import static java.lang.Math.abs; import static java.lang.Math.abs;
import static java.lang.Math.signum;
public class NumericValue extends Value public class NumericValue extends Value
{ {
@@ -57,6 +58,7 @@ public class NumericValue extends Value
{ {
if (value.isInfinite()) return "INFINITY"; if (value.isInfinite()) return "INFINITY";
if (value.isNaN()) return "NaN"; if (value.isNaN()) return "NaN";
if (abs(value) < epsilon) return (signum(value) < 0)?"-0":"0"; //zero rounding fails with big decimals
// dobules have 16 point precision, 12 is plenty to display // dobules have 16 point precision, 12 is plenty to display
return BigDecimal.valueOf(value).round(displayRounding).stripTrailingZeros().toPlainString(); return BigDecimal.valueOf(value).round(displayRounding).stripTrailingZeros().toPlainString();
} }