gpt4 book ai didi

java - 如何修复 Symja 中的精度?

转载 作者:行者123 更新时间:2023-12-02 10:56:04 24 4
gpt4 key购买 nike

我正在使用Symja .

关于http://matheclipse.org/ ,当我运行以下公式时:

round(100*17347*0.047)*0.01

我得到:815.31

运行以下Java代码时

ExprEvaluator exprEvaluator = new ExprEvaluator(false,100);
double d = exprEvaluator.evalf("round(100*17347*0.047)*0.01");
System.out.println(d);

我得到:815.3100000000001

我错过了什么?

最佳答案

代码没有错误。如果您只想获得 2 精度的数字,我的意思是打印,请使用 printf() 代替 println()

ExprEvaluator exprEvaluator = new ExprEvaluator(false,100);
double d = exprEvaluator.evalf("round(100*17347*0.047)*0.01");
System.out.printf("%.2f\n", d);

或者,如果您想要其数字舍入值,您可以使用 Java 的 DecimalFormat

double d = 815.3100000000001;
System.out.println(d);

DecimalFormat newFormat = new DecimalFormat("#.##");
double twoDecimal = Double.valueOf(newFormat.format(d));
System.out.println(twoDecimal);

更重要的是,如果您对其行为感到不舒服,请覆盖 evalf 方法并在其中使用 Math.round(...) 。它可以实现您的愿望,而不需要额外的 Java 方法。此外,您应该看一下 evalf 的实现。

关于java - 如何修复 Symja 中的精度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51728573/

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