// 浮点数相乘 解决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));