flo-utils
Version:
19 lines • 703 B
JavaScript
/**
* 精确加法, 预防相加结果精度问题
* 支持同单位数相加
* @param num1 {number, string}
* @param num2 {number, string}
*/
export default function addNums(num1, num2) {
var dreg = /^\d+(\.\d+)?/g;
var d1 = num1.toString().replace(dreg, '');
var d2 = num2.toString().replace(dreg, '');
var n1 = parseFloat(num1);
var n2 = parseFloat(num2);
if (d1 !== d2) return "".concat(num1, " + ").concat(num2);
var num1Digits = (n1.toString().split('.')[1] || '').length;
var num2Digits = (n2.toString().split('.')[1] || '').length;
var baseNum = Math.pow(10, Math.max(num1Digits, num2Digits));
var add = (n1 * baseNum + n2 * baseNum) / baseNum;
return add + d1;
}