首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用jeval时避免准确性损失?

如何在使用jeval时避免准确性损失?
EN

Stack Overflow用户
提问于 2019-03-13 19:00:03
回答 1查看 56关注 0票数 0

我使用jeval执行一些数据计算任务,但发现准确性有所下降。在使用jeval时,有没有办法避免精确度损失?我想要像BigDecimal一样得到准确的结果。

代码语言:javascript
复制
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”。

EN

回答 1

Stack Overflow用户

发布于 2019-03-13 22:48:57

根据Jeval的Javadoc for the evaluate(String expression) method for Jeval 0.9.4,它说:

“计算的结果。表达式。数字被视为双精度,因此结果数字将至少包含一个小数位。”

使用doubles时,您无法避免精度损失。参见this。浮点数有这个限制。例如,您可以在生成11.3999999999995.6 + 5.8这样的简单表达式中看到它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55140288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档