EL.eval()用挺久了,平时都挺正常的,突然才发现出问题。
遇到某些数值(无特殊规律)处理的结果达不到预想值,主要是double精度问题,用float满足不了业务需求(数值超出范围)。
求助作者帮忙解决一下~感谢~
测试代码如下(注释是输出结果):
public static void main(String[] args) {
System.out.println(El.eval("175843.92D==115203.95D+60639.97D")); // false
System.out.println(El.eval("175843.92D")); // 175843.92
System.out.println(El.eval("115203.95D")); // 115203.95
System.out.println(El.eval("60639.97D")); // 60639.97
System.out.println(El.eval("115203.95D+60639.97D")); // 175843.91999999998
System.out.println(El.eval("175843.92F==115203.95F+60639.97F")); // true
System.out.println(El.eval("175843.92F")); // 175843.92
System.out.println(El.eval("115203.95F")); // 115203.95
System.out.println(El.eval("60639.97F")); // 60639.97
System.out.println(El.eval("115203.95F+60639.97F")); // 175843.92
}