策略就是把小數值變成整數進行操做加減乘除
github --- L6ztgit
// 獲取最大補位長度 const findMinRadixPoint = (numberList) => { let maxLg = 0; numberList.forEach(num => { let numStr = num.toString(); let numSplit = numStr.split('.'); let bitLg = (numSplit[1] || '').length; (bitLg > maxLg) && (maxLg = bitLg) }); return maxLg }; /*數字補位*/ const numberCoverPosition = (number, length) => { let numberStr = String(number); let lg = numberStr.length; let idx = numberStr.indexOf('.'); if (idx === -1) { return number * Math.pow(10, length); } else { let addW = length - (lg - 1 - idx); let oLoop = ''; while (addW) { oLoop += '0'; addW--; } return Number(numberStr.replace(/(\d+?)\.(\d+?)/, `$1$2${oLoop}`)) } }; /*數字減位*/ const NumberDigitAbsorption = (number, length) => { let numberStr = String(number); let lg = numberStr.length; if (lg > length) { numberStr = numberStr.substr(0, lg - length) + '.' + numberStr.substr(lg - length); } else { let leftW = length - lg; let oLoop = ''; while (leftW) { oLoop += '0'; leftW--; } numberStr = '0.' + oLoop + numberStr } return numberStr };