js解决0.1 * 0.2 不等于 0.02的问题,小数部分精度丢失的问题

59 阅读1分钟

// 浮点数相乘 解决0.1 * 0.2 = 0.02的问题 ---js function floatNum(n1, n2) { const n1Len = String(n1).split('.')[1].length; const n2Len = String(n2).split('.')[1].length;

// 科学计算法
const maxLen = Math.max(n1Len, n2Len);
const minLen = Math.min(n1Len, n2Len);

// 乘法 先求出最大公约数  再求出最小公倍数
function getGcd(minLen, maxLen) {
    if (maxLen % minLen === 0) {
        return minLen
    } else {
        return getGcd(max % min, min)
    }
}
function getLcm(minLen, maxLen) {
    return minLen * maxLen / getGcd(minLen, maxLen)
}
const mulComNum = getLcm(minLen, maxLen); // 这个数10的最小公倍数次方
const mulCom = Math.pow(10, mulComNum); // 这个数是最小公倍数
return (n1 * mulCom * n2 * mulCom) / Math.pow(mulCom, 2);

} console.log(floatNum(0.1, 0.2)); console.log(Number(0.1 * 0.2));

784be29336805ef680eef610b00a6e0.png