代码拉取完成,页面将自动刷新
涉及到的类如下:
src/org/nutz/el/opt/arithmetic/DivOpt.java
src/org/nutz/el/opt/arithmetic/MulOpt.java
看里面的代码,double类型会直接作乘除法,可不可以考虑用BigDecimal并支持定义scale精度参数呢?
目前EL表达式中“/”会直接对应DivOpt类去处理,如果能支持扩展自定义处理类就最好了,自己去实现里面的逻辑、控制精度。
谢谢!
貌似你得手动用BigDecimal来做处理,el表达式处理浮点数的时候是按照java原生的方式来处理的
你说的我明白,目前是按照原生的方式,我是问nutz能提供扩展的实现方式吗?现在我只能通过在自己项目代码中定义 包名+类名完全相同的的DivOpt和MulOpt ,以此来达到复写源码的方式来实现的,这方式有点丑。。。
package org.nutz.el.opt.arithmetic;
import org.nutz.el.opt.TwoTernary;
/**
* 除
* @author juqkai(juqkai @ gmail.com)
*/
public class DivOpt extends TwoTernary {
public int fetchPriority() {
return 3;
}
public Object calculate() {
Number lval = (Number) calculateItem(this.left);
Number rval = (Number) calculateItem(this.right);
if (rval instanceof Double || lval instanceof Double) {
//自己用BigDecimal处理
}
if (rval instanceof Float || lval instanceof Float) {
//自己用BigDecimal处理
}
if (rval instanceof Long || lval instanceof Long) {
//自己用BigDecimal处理
}
//自己用BigDecimal处理
}
public String fetchSelf() {
return "/";
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
登录 后才可以发表评论