首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

JexlEngine 计算表达式 解析大数据值的有关问题

2012-09-16 
JexlEngine 计算表达式 解析大数据值的问题如题,org.apache.commons.jexl2.JexlEngine 作用是 计算 字符

JexlEngine 计算表达式 解析大数据值的问题
如题,org.apache.commons.jexl2.JexlEngine; 作用是 计算 字符串计算表达式的。

小数据用的好好的,但是当表达式中的数据值很大时候,就出问题了,

直接上代码吧

Java code
public static void main(String[] args) {                JexlEngine je = new JexlEngine();        // Create an expression object        Expression e = je.createExpression("245687348.3");        Number result = (Number) e.evaluate(null);        //System.out.println(result);        System.out.println(String.format("%.4f", result));    }


当前表达式为 : 245687348.3 (就一个数字,测试用的)

打印的结果是 : 245687344.0000 (根本不知道怎么来的)

请熟悉的朋友告诉下吧,急。分不多,请多多包含~!

[解决办法]
看了下源码,JEXL将"245687348.3"当成float来处理,将其转换成Number的时候,使用了Float.valueOf("245687348.3"),于是就出现了上面一幕

可以在245687348.3后面加上d,让JEXL认为其是一个Double,double比float精度高,或者后面加b,让其认为是一个BigDecimal

热点排行