values close to zero don't round nicely with bigdecs
This commit is contained in:
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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user