之前写的一篇文章说的mvel遇到的坑 解决办法是*1.0,这次貌似是无解了
public static void main(String[] args) {
System.err.println(19950574*0.3);
System.err.println(19950574*0.2999999399);
String exp3="a*b";
Map<String, Object> map=new HashMap<>();
map.put("a", 19950574);
map.put("b", 0.3);
Serializable exp4 = MVEL.compileExpression(exp3);
System.err.println( MVEL.executeExpression(exp4, map, Double.class));
}
结果是
5985172.2
5985171.000970502
5985171.0
从结果来看mvel是把0.3 当成了0.2999999399,这个就太不精确了吧。
但是 map.put("a", 19950574.0); 就是换成double的时候是ok的,从这来看是mvel的bug了
之前的解决办法是*1.0 但是这里是不ok得。
求办法啊。。。。
分享到:
相关推荐
MVEL 2.0表达式语言MVEL 2.0表达式语言MVEL 2.0表达式语言
NULL 博文链接:https://yanguz123.iteye.com/blog/2146176
数值表达式,可执行算术运算公式。 例如:(100 – 5) * 14/6 <br/>
mvel2.0语法指南,MVEL通常用于执行用户(程序员)通过配置XML文件或注释等定义的基本逻辑。它也可以用来解析简单的JavaBean表达式。Runtime(运行时)允许MVEL表达式通过解释执行或者预编译生成字节码后执行。
逗号表达式(表达式1,表达式2….)逗号表达式最右边的值为逗号表达式的值.one
网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信是一个非常广泛的领域,它涉及到计算机科学、电子工程、数学等多个学科的知识。 云计算与大数据:包括云计算平台、大数据分析、人工...
正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式
表达式解析表达式解析表达式解析表达式解析表达式解析表达式解析
输入的后缀表达式包含的运算符不超过15个。要求转换后的中缀表达式中不应出现不必要的括号。例如,整个表达式两端的括号要省略,不影响原计算顺序的括号要省略。 【输入形式】 程序从标准输入上读入一行字符串,...
c语言实现的两个表达式的加减乘除,以及一个表达式的积分,微分 输入x+1 x+2 可以输出选择的相应运算
el 表达式el 表达式el 表达式el 表达式el 表达式
ognl表达式 ognl表达式 ognl表达式 ognl表达式
按照惯例,算术表达式一般都写成中缀形式,即运算符总是出现在两个操作数之间,单目运算符除外),称为中缀表达式.编译系统对中缀表达式的处理方法是先把它转换为后后缀表达式.在后缀表达式中,运算符位于两个操作数的后面...
使用正则表达式验证一年的12个月份,程序完全可以运行,方便大家调试开发
易语言“正则表达式”教程源码,“正则表达式”教程,搜索,初始化,界面初始化,刷新表达式任务列表,刷新分析结果列表,增加表达式任务,清空分析结果列表,清空表达式列表,删除表达式任务,修改表达式任务,增加分析结果,...
正则表达式,正则表达式,正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式
常用正则表达式 正则表达式 常用正则表达式 正则表达式