UNPKG

ang-tool

Version:

JavaScript常用方法的封装|Encapsulation of common JavaScript methods

74 lines (56 loc) 2.38 kB
<!-- <script> function add (num1, num2) { function helperNumberDecimal (numStr) { return (numStr.split('.')[1] || '').length } /** * 数值转字符串,科学计数转字符串 * @param { Number } num 数值 * * @return {Number} */ function toNumberString (num) { var rest = '' + num var scienceMatchs = rest.match(/^([-+]?)((\d+)|((\d+)?[.](\d+)?))e([-+]{1})([0-9]+)$/) if (scienceMatchs) { var isNegative = num < 0 var absFlag = isNegative ? '-' : '' var intNumStr = scienceMatchs[3] || '' var dIntNumStr = scienceMatchs[5] || '' var dFloatNumStr = scienceMatchs[6] || '' var sciencFlag = scienceMatchs[7] var scienceNumStr = scienceMatchs[8] var floatOffsetIndex = scienceNumStr - dFloatNumStr.length var intOffsetIndex = scienceNumStr - intNumStr.length var dIntOffsetIndex = scienceNumStr - dIntNumStr.length if (sciencFlag === '+') { if (intNumStr) { return absFlag + intNumStr + helperStringRepeat('0', scienceNumStr) } if (floatOffsetIndex > 0) { return absFlag + dIntNumStr + dFloatNumStr + helperStringRepeat('0', floatOffsetIndex) } return absFlag + dIntNumStr + helperNumberOffsetPoint(dFloatNumStr, scienceNumStr) } if (intNumStr) { if (intOffsetIndex > 0) { return absFlag + '0.' + helperStringRepeat('0', Math.abs(intOffsetIndex)) + intNumStr } return absFlag + helperNumberOffsetPoint(intNumStr, intOffsetIndex) } if (dIntOffsetIndex > 0) { return absFlag + '0.' + helperStringRepeat('0', Math.abs(dIntOffsetIndex)) + dIntNumStr + dFloatNumStr } return absFlag + helperNumberOffsetPoint(dIntNumStr, dIntOffsetIndex) + dFloatNumStr } return rest } function helperNumberAdd (addend, augend) { var str1 = toNumberString(addend) var str2 = toNumberString(augend) var ratio = Math.pow(10, Math.max(helperNumberDecimal(str1), helperNumberDecimal(str2))) return (multiply(addend, ratio) + multiply(augend, ratio)) / ratio } return helperNumberAdd(toNumber(num1), toNumber(num2)) } </script> -->