代码没有错。如果你只想得到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方法的情况下实现您的愿望。此外,您应该看一下
埃弗夫
.