package com.engine.salary.formlua.func.math;

import com.engine.salary.formlua.entity.parameter.DataType;

public interface MathFuncsService {
    /**
     * 向上取整
     * @param object
     * @return
     */
    public DataType roundUp(Object... object);

    /**
     * 向下取整
     * @param object
     * @return
     */
    public DataType roundDown(Object... object);

    /**
     * 四舍五入
     * @param object
     * @return
     */
    public DataType round(Object... object);

    /**
     * 统计函数
     * @param objects
     * @return
     */
    public DataType aggregation(Object... objects);

    /**
     * 取余函数
     * @param objects
     * @return
     */
    public DataType mod(Object... objects);

    /**
     * 精度控制函数
     * @param number
     * @param numDigits
     * @return
     */
    public DataType Trunc(Object number,Object numDigits);

    /**
     * 随机数
     * @param length 随机数长度
     * @param type 随机数类型，分为纯数字、纯英文字母、英文和数字的组合
     * @return
     */
    public DataType randomNumber(Object length,Object type);

    /**
     * 分组函数
     * @param objects 分组的数据
     * @return 返回一个结果集，这个结果集不能直接使用，要通过其他函数继续运算得出结果，比如aggregation统计函数
     */
    public DataType group(Object... objects);

    /**
     * 是否是整数
     * @param objects
     * @return
     */
    public DataType isInt(Object... objects);

    /**
     * 是否是数字
     * @param objects
     * @return
     */
    public DataType isNumber(Object... objects);


}
