Skip to content

add

加法运算, 其中调用getDecimalLength方法

配置项

参数类型是否必选默认值参数描述
number1number-操作数1
number2number-操作数2
maxTimesnumber-可选的对阶倍数

返回值

类型描述
number运算结果

示例

console.log(add(0.1, 0.2)) // 0.3
console.log(add(0.7, 0.1)) // 0.8
console.log(add(0.2, 0.4)) // 0.6

源码

js
export function add (number1, number2, maxTimes) {
    // const calculateMaxTimes = (number1, number2, maxTimes) => {
    //     const max = Math.max(...getDecimalLength([number1, number2]));
    //     return maxTimes || Math.pow(10, max);
    // };
    maxTimes = calculateMaxTimes(number1, number2, maxTimes);
    const res = (number1 * maxTimes + number2 * maxTimes) / maxTimes;
    const resultDecimalLength = getDecimalLength(res);

    // 如果结果的小数位数超过输入的最大小数位数,递归调用
    if (resultDecimalLength > Math.max(...getDecimalLength([number1, number2]))) {
        return add(number1, number2, maxTimes * 10);
    }

    return res;
}