主题:runScript中Double进行运算比较稳妥

taolive 2019年09月28日 40

Map params = new HashMap();

params.put("d", 100.85d);


beetl脚本

if(d > 100) {

/*.......*/

}


由于d是Double类型,导致 if判断为false,该怎么处理呢?

闲大赋 2019年09月29日
String script = "return d>100;";
Map params = new HashMap();
params.put("d", 100.85d);
Map map = gt.runScript(script,params,new StringWriter(),new StringTemplateResourceLoader());
System.out.println(map);

这是我写的代码,输出位true,正常结果,不知道你那为什么为false,

  • taolive :后面打印了具体的数据类型,发现数据库返回的是:d变量是BigDecimal类型的,所以 d > 100 失效了,现在是自定义了objectUtil.compareTo方法进行数字运算(2019年10月03日)
闲大赋 6天前

哦,这个没办法比较了,因为java里要是比较double和BigDecimal,也是有点麻烦,你写个方法比较可以