QLExpress 数学公式计算以及精度问题

使用 QLExpress 计算数学公式 会让代码更简洁并且能够保证高精度;

maven引入

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>QLExpress</artifactId>
   <version>3.3.1</version>
</dependency>

公共方法代码块

package com.common.utils;

import com.ql.util.express.DefaultContext;
import com.ql.util.express.ExpressRunner;
import org.springframework.util.StringUtils;

/**
 * @author oi77
 * @date 2023/06/29 16:15:50
 */
public class QLExpressUtil {

    public static double execute(double result) {
        double max = Math.max(0, result);
        return max;
    }

    public static Object toCalculate(String express ,DefaultContext<String, Object> context) throws Exception {
        // @param isPrecise 是否需要高精度计算支持
        // @param isTrace   是否跟踪执行指令的过程
        ExpressRunner runner = new ExpressRunner(true,false);
        runner.addFunctionOfClassMethod("转换", QLExpressUtil.class.getName(), "execute", new String[] {"double"}, null);
        if(!StringUtils.hasText(express)){
            return 0;
        }
        Object execute = runner.execute(express, context, null, false, false);
        return execute;
    }

}

// @param isPrecise 是否需要高精度计算支持
// @param isTrace   是否跟踪执行指令的过程
ExpressRunner runner = new ExpressRunner(true,false);

QLExpress引擎提供了isPrecise 和 isTrace两个属性,在ExpressRunner 初始化的时候可以指定isPrecise 是否需要高精度计算支持和isTrace 是否跟踪执行指令的过程。isTrace在调试阶段很有用,可以查看表达式执行指令的整个过程,在程序上线时,建议设置为false避免浪费资源。

测试代码

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值