gpt4 book ai didi

java - 使用jeval时如何避免精度损失?

转载 作者:行者123 更新时间:2023-12-02 10:08:53 25 4
gpt4 key购买 nike

我使用jeval执行一些数据计算任务,发现准确性有所损失。使用 jeval 时有什么方法可以避免准确性损失吗?我想像BigDecimal一样得到准确的结果。

public class EvalTest {

private static Evaluator eva = new Evaluator();

public static void main(String[] args) {

try {
String formula = "780.0000000-259.9999998";
String res = eva.evaluate(formula);

BigDecimal a = BigDecimal.valueOf(780.0000000);
BigDecimal b = BigDecimal.valueOf(259.9999998);
BigDecimal c = a.subtract(b);

System.out.println("a");
} catch (Exception e) {
e.printStackTrace();
}
}
}

如果我使用jeval,公式“780.0000000-259.9999998”将得到结果“520.0000001999999”,但如果我使用BigDecimal,我可以获得精度结果“520.0000002”。

最佳答案

根据 Jeval 0.9.4 的 evaluate(String expression) 方法的 Javadoc,它说:

"The result of the evaluated. expression. Numbers are treated as doubles, so resulting numbers will contain at least one decimal place."

使用 double 时,您无法避免准确性损失。请参阅this 。 float 有这个限制。例如,您可以看到像 5.6 + 5.8 这样的简单表达式,它会产生 11.399999999999

关于java - 使用jeval时如何避免精度损失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55140288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com