UNPKG

pixiu-number-toolkit

Version:
1 lines 65.3 kB
{"version":3,"sources":["../src/conversion/chineseCurrency.ts","../src/conversion/chineseCharacter.ts","../src/conversion/englishCharacter.ts","../src/finance/expressions.ts","../src/math/config.ts","../src/finance/sequence.ts","../src/formatting/currency.ts","../src/formatting/padZero.ts","../src/math/computeExpression.ts","../src/math/math.ts","../src/math/unitConversion.ts","../src/network/CIDR.ts","../src/parse/numberDetails.ts","../src/animation/numericCounter.ts"],"names":["digit","unit","MAX_CONVERTIBLE_AMOUNT","numberToChineseUppercaseCurrency","n","head","fractionPart","jiao","fen","fraction","integer","i","p","j","ZERO_DOT_END_REGEX","EMPTY_START_REGEX","ZERO_YUAN_REGEX","ZERO_DOT_PLUS_REGEX","WHOLE_REGEX","digitMap","unitMap","chineseUppercaseCurrencyToNumber","s","result","currentNum","isNegative","temp","tempResult","char","computeExpression","onesZh","tensZh","thousandsZh","MAX_SAFE_INTEGER","numberToChineseCharacter","number_","integerPart","decimalPart","words","convertInteger","convertDecimal","previousPart","index","currentPart","currentWords","helperZh","decimal","zeroFlag","hasNonZero","ones","tens","scales","numberToEnglishCharacter","chunk","convertChunk","onesDigit","englishCharacterToNumber","text","parts","integerWords","decimalWords","integerValue","parseIntegerWords","decimalValue","word","currentNumber","scale","calculateGrossAmount","netAmount","taxRate","calculateTaxRate","grossAmount","calculateTaxAmount","calculateNetAmount","calculateDiscountPrice","originalPrice","discountRate","calculateDiscountAmount","math","create","all","convertToBigNumbers","parameters","convertedParameters","key","value","isValidThousandSeparatedNumber","arithmeticSequence","a","d","sequence","geometricSequence","defaultOptions","getCurrencySeparators","locale","groupSeparator","decimalSeparator","part","convertCurrencyToNumber","groupSeparatorRegex","decimalSeparatorRegex","cleanedValue","TRIM_NON_NUMERIC_REGEX","numericValue","currency","options","style","unitDisplay","notation","signDisplay","currencySign","currencyDisplay","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","maximumSignificantDigits","minimumSignificantDigits","prefix","suffix","__spreadValues","padZero","decimalLength","originalString","currentDecimalPlaces","parseNumberDetails","zeroCount","formula","checkParameters","values","length","item","isValidNumeric","arrayToBigNumber","add","subtract","bigNumberValues","multiply","divide","modulo","divisor","round","decimalPlaces","ceil","floor","pickRandom","random","min","max","randomInt","equal","x","y","unequal","larger","largerEq","smaller","smallerEq","unitConversion","fromUnit","toUnit","withUnit","ipToNumber","ip","isValidIPv4","acc","octet","numberToIp","num","pow","calculateSubnetMask","cidrBits","calculateNetworkAddress","ipNum","mask","calculateBroadcastAddress","calculateIpRange","networkAddress","broadcastAddress","firstUsable","lastUsable","calculateTotalIps","calculateUsableIps","isIpInRange","cidrIp","cidrIpNum","cidrCalculator","totalIps","usableIps","unsignedOriginalString","decimalIndex","integerLength","animateNumericCount","start","end","duration","callback","startTime","difference","roundToDecimal","factor","animate","currentTime","elapsedTime","progress","currentValue"],"mappings":"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","file":"chunk-D3SDZHTW.cjs","sourcesContent":["import {\r\n EMPTY_START_REGEX,\r\n WHOLE_REGEX,\r\n ZERO_DOT_END_REGEX,\r\n ZERO_DOT_PLUS_REGEX,\r\n ZERO_YUAN_REGEX,\r\n} from '../constants/regex';\r\n\r\nimport { computeExpression } from '..';\r\n\r\nconst digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];\r\nconst unit = [\r\n ['元', '万', '亿'],\r\n ['', '拾', '佰', '仟'],\r\n];\r\n\r\nconst MAX_CONVERTIBLE_AMOUNT = 999999999999.99;\r\n\r\nexport function numberToChineseUppercaseCurrency(n: number): string {\r\n if (Math.abs(n) > MAX_CONVERTIBLE_AMOUNT) {\r\n throw new Error('金额超出可转换范围');\r\n }\r\n\r\n const head = n < 0 ? '欠' : '';\r\n n = Math.abs(n);\r\n\r\n const fractionPart = Math.round((n % 1) * 100);\r\n const jiao = Math.floor(fractionPart / 10);\r\n const fen = fractionPart % 10;\r\n\r\n let fraction = '';\r\n if (jiao > 0) {\r\n fraction += `${digit[jiao]}角`;\r\n }\r\n if (fen > 0) {\r\n fraction += `${digit[fen]}分`;\r\n }\r\n fraction = fraction || '整';\r\n\r\n let integer = '';\r\n n = Math.floor(n);\r\n for (let i = 0; i < unit[0].length && n > 0; i++) {\r\n let p = '';\r\n for (let j = 0; j < unit[1].length && n > 0; j++) {\r\n p = digit[n % 10] + unit[1][j] + p;\r\n n = Math.floor(n / 10);\r\n }\r\n integer = p.replace(ZERO_DOT_END_REGEX, '').replace(EMPTY_START_REGEX, '零') + unit[0][i] + integer;\r\n }\r\n\r\n return head + (integer + fraction)\r\n .replace(ZERO_YUAN_REGEX, '元')\r\n .replace(ZERO_DOT_PLUS_REGEX, '零')\r\n .replace(WHOLE_REGEX, '零元整');\r\n}\r\n\r\n\r\nconst digitMap: Record<string, number> = {\r\n 零: 0, 壹: 1, 贰: 2, 叁: 3, 肆: 4, 伍: 5, 陆: 6, 柒: 7, 捌: 8, 玖: 9,\r\n};\r\n\r\nconst unitMap: Record<string, number> = {\r\n 拾: 10, 佰: 100, 仟: 1000, 万: 10000, 亿: 100000000,\r\n};\r\n\r\nexport function chineseUppercaseCurrencyToNumber(s: string): number {\r\n let result = 0;\r\n let currentNum = 0;\r\n let isNegative = false;\r\n let temp = 0;\r\n let tempResult = 0;\r\n\r\n if (s.startsWith('欠')) {\r\n isNegative = true;\r\n s = s.slice(1);\r\n }\r\n\r\n for (const char of s) {\r\n if (char in digitMap) {\r\n currentNum = digitMap[char];\r\n } else if (char in unitMap) {\r\n if (currentNum === 0 && char === '拾') {\r\n currentNum = 1;\r\n }\r\n if (unitMap[char] >= 10000) {\r\n temp = Number(computeExpression(`${temp}+${currentNum}`));\r\n tempResult = Number(computeExpression(`${tempResult}+ ${temp} * ${unitMap[char]}`));\r\n if (char === '亿') {\r\n result = Number(computeExpression(`${result} + ${tempResult}`));\r\n tempResult = 0;\r\n }\r\n temp = 0;\r\n } else {\r\n temp = Number(computeExpression(`${temp} + ${currentNum} * ${unitMap[char]}`));\r\n }\r\n currentNum = 0;\r\n } else if (char === '元' || char === '整') {\r\n temp = Number(computeExpression(`${temp} + ${currentNum}`));\r\n tempResult = Number(computeExpression(`${tempResult} + ${temp}`));\r\n result = Number(computeExpression(`${result} + ${tempResult}`));\r\n temp = 0;\r\n tempResult = 0;\r\n currentNum = 0;\r\n } else if (char === '角') {\r\n result = Number(computeExpression(`${result}+${currentNum} * 0.1`));\r\n currentNum = 0;\r\n } else if (char === '分') {\r\n result = Number(computeExpression(`${result}+${currentNum} * 0.01`));\r\n currentNum = 0;\r\n }\r\n }\r\n\r\n result = Number(computeExpression(`${result} + ${tempResult} + ${temp} + ${currentNum}`));\r\n return isNegative ? -result : result;\r\n}\r\n","import { computeExpression } from '../index';\r\n\r\nconst onesZh = ['', '一', '二', '三', '四', '五', '六', '七', '八', '九'];\r\nconst tensZh = ['', '十', '百', '千'];\r\nconst thousandsZh = ['', '万', '亿'];\r\nconst MAX_SAFE_INTEGER = 100_000_000_000; // 1000亿\r\n/**\r\n * Convert number to words in English or Chinese.\r\n * 将数字转换为英文或中文表示的文字\r\n *\r\n * @param number_ - The number to convert (要转换的数字)\r\n * @returns The number in words (文字形式的数字)\r\n */\r\nexport function numberToChineseCharacter(number_: number): string {\r\n if (Math.abs(number_) >= MAX_SAFE_INTEGER) {\r\n throw new Error('输入的整数部分必须在-1000亿到1000亿之间');\r\n }\r\n\r\n if (number_ === 0) return '零';\r\n\r\n const isNegative = number_ < 0;\r\n number_ = Math.abs(number_);\r\n\r\n const integerPart = Math.floor(number_);\r\n const decimalPart = Number(computeExpression(`${number_} - ${integerPart}`));\r\n\r\n let words = integerPart === 0 ? '零' : convertInteger(integerPart);\r\n\r\n if (decimalPart > 0) {\r\n words += `点${convertDecimal(decimalPart)}`;\r\n }\r\n\r\n return isNegative ? `负${words}` : words;\r\n}\r\n\r\nfunction convertInteger(number_: number): string {\r\n let words = '';\r\n let previousPart = 0;\r\n for (let index = 0; number_ > 0; index++) {\r\n const currentPart = number_ % 10_000;\r\n if (currentPart !== 0) {\r\n const currentWords = helperZh(currentPart);\r\n if (previousPart < 1000 && previousPart !== 0 && index > 0) {\r\n words = `零${words}`;\r\n }\r\n words = currentWords + (index > 0 ? thousandsZh[index] : '') + words;\r\n }\r\n previousPart = currentPart;\r\n number_ = Math.floor(number_ / 10_000);\r\n }\r\n return words.trim();\r\n}\r\n\r\nfunction convertDecimal(decimal: number): string {\r\n const decimalStr = decimal.toString().slice(2); // 保留两位小数并去掉\"0.\"\r\n return decimalStr.split('').map((digit) => {\r\n // 如果当前数字是0,并且不是第一个数字,并且下一个数字不是0,则添加\"零\"\r\n if (digit === '0') {\r\n return '零';\r\n }\r\n return onesZh[parseInt(digit, 10)];\r\n }).join('');\r\n}\r\n\r\n/**\r\n * Helper function to convert numbers to Chinese words.\r\n * 将数字转换为中文文字的辅助函数.\r\n *\r\n * @param number_ - The number to convert (要转换的数字)\r\n * @returns The number in Chinese words (中文文字形式的数字)\r\n */\r\nfunction helperZh(number_: number): string {\r\n if (number_ === 0) {\r\n return '';\r\n } else if (number_ < 10) {\r\n return onesZh[number_];\r\n } else if (number_ === 10) {\r\n return tensZh[1]; // eg. 10 -> 十\r\n } else {\r\n let words = '';\r\n let unit = 0;\r\n let zeroFlag = false; // Flag to mark the need to add \"零\" (标记是否需要添加“零”)\r\n let hasNonZero = false; // Flag to mark the encounter of non-zero digit (标记是否遇到非零数字)\r\n while (number_ > 0) {\r\n const digit = number_ % 10;\r\n if (digit === 0) {\r\n if (hasNonZero) {\r\n zeroFlag = true;\r\n }\r\n } else {\r\n hasNonZero = true;\r\n if (zeroFlag) {\r\n words = `零${words}`;\r\n zeroFlag = false;\r\n }\r\n words = onesZh[digit] + tensZh[unit] + words;\r\n }\r\n number_ = Math.floor(number_ / 10);\r\n unit++;\r\n }\r\n return words.replace(/零+$/, ''); // Remove trailing zeros (去除末尾多余的零)\r\n }\r\n}\r\n","import { computeExpression } from '../index';\r\n\r\nconst ones = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten',\r\n 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'];\r\nconst tens = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];\r\nconst scales = ['', 'thousand', 'million', 'billion', 'trillion'];\r\nconst MAX_SAFE_INTEGER = 1_000_000_000_000; // 1 trillion\r\n\r\n/**\r\n * Convert number to words in English.\r\n * 将数字转换为英文表示的文字\r\n *\r\n * @param number_ - The number to convert (要转换的数字)\r\n * @returns The number in words (文字形式的数字)\r\n */\r\nexport function numberToEnglishCharacter(number_: number): string {\r\n if (Math.abs(number_) >= MAX_SAFE_INTEGER) {\r\n throw new Error('Input must be between -1 trillion and 1 trillion');\r\n }\r\n\r\n if (number_ === 0) return 'zero';\r\n\r\n const isNegative = number_ < 0;\r\n number_ = Math.abs(number_);\r\n\r\n const integerPart = Math.floor(number_);\r\n const decimalPart = Number(computeExpression(`${number_} - ${integerPart}`));\r\n\r\n let words = integerPart === 0 ? 'zero' : convertInteger(integerPart);\r\n\r\n if (decimalPart > 0) {\r\n words += ` point ${convertDecimal(decimalPart)}`;\r\n }\r\n\r\n return isNegative ? `negative ${words}` : words;\r\n}\r\n\r\nfunction convertInteger(number_: number): string {\r\n if (number_ === 0) return '';\r\n\r\n let words = '';\r\n\r\n // Process each group of 3 digits\r\n for (let i = 0; number_ > 0; i++) {\r\n const chunk = number_ % 1000;\r\n\r\n if (chunk !== 0) {\r\n const chunkWords = convertChunk(chunk);\r\n words = chunkWords + (i > 0 ? ` ${scales[i]} ` : '') + words;\r\n } else if (i > 0 && words !== '') {\r\n // Don't add scale for zero chunks\r\n }\r\n\r\n number_ = Math.floor(number_ / 1000);\r\n }\r\n\r\n return words.trim();\r\n}\r\n\r\nfunction convertChunk(number_: number): string {\r\n if (number_ === 0) return '';\r\n\r\n let words = '';\r\n\r\n // Handle hundreds\r\n if (number_ >= 100) {\r\n words += `${ones[Math.floor(number_ / 100)]} hundred`;\r\n number_ %= 100;\r\n if (number_ > 0) {\r\n words += ' and ';\r\n }\r\n }\r\n\r\n // Handle tens and ones\r\n if (number_ > 0) {\r\n if (number_ < 20) {\r\n words += ones[number_];\r\n } else {\r\n words += tens[Math.floor(number_ / 10)];\r\n const onesDigit = number_ % 10;\r\n if (onesDigit > 0) {\r\n words += `-${ones[onesDigit]}`;\r\n }\r\n }\r\n }\r\n\r\n return words;\r\n}\r\n\r\nfunction convertDecimal(decimal: number): string {\r\n const decimalStr = decimal.toString().slice(2); // Remove \"0.\"\r\n return decimalStr.split('').map(digit => {\r\n return digit === '0' ? 'zero' : ones[parseInt(digit, 10)];\r\n }).join(' ');\r\n}\r\n\r\n/**\r\n * Convert English words to number.\r\n * 将英文单词转换为数字\r\n *\r\n * @param text - The English words to convert (要转换的英文单词)\r\n * @returns The number (数字)\r\n */\r\nexport function englishCharacterToNumber(text: string): number {\r\n text = text.toLowerCase().trim();\r\n\r\n if (text === 'zero') return 0;\r\n\r\n let isNegative = false;\r\n if (text.startsWith('negative ')) {\r\n isNegative = true;\r\n text = text.substring(9);\r\n }\r\n\r\n // Handle decimal part\r\n const parts = text.split(' point ');\r\n const integerWords = parts[0];\r\n const decimalWords = parts.length > 1 ? parts[1] : '';\r\n\r\n let integerValue = parseIntegerWords(integerWords);\r\n let decimalValue = 0;\r\n\r\n if (decimalWords) {\r\n const decimalDigits = decimalWords.split(' ').map(word => {\r\n if (word === 'zero') return 0;\r\n return ones.indexOf(word);\r\n });\r\n\r\n let decimalStr = decimalDigits.join('');\r\n decimalValue = Number(`0.${decimalStr}`);\r\n }\r\n\r\n const result = integerValue + decimalValue;\r\n return isNegative ? -result : result;\r\n}\r\n\r\nfunction parseIntegerWords(text: string): number {\r\n // Remove 'and' and replace hyphens with spaces\r\n text = text.replace(/ and /g, ' ').replace(/-/g, ' ');\r\n const words = text.split(' ').filter(word => word !== '');\r\n\r\n let result = 0;\r\n let currentNumber = 0;\r\n\r\n for (let i = 0; i < words.length; i++) {\r\n const word = words[i];\r\n\r\n if (word === 'hundred') {\r\n currentNumber *= 100;\r\n } else if (scales.includes(word)) {\r\n const scale = scales.indexOf(word);\r\n currentNumber *= Math.pow(1000, scale);\r\n result += currentNumber;\r\n currentNumber = 0;\r\n } else if (ones.includes(word)) {\r\n currentNumber += ones.indexOf(word);\r\n } else if (tens.includes(word)) {\r\n currentNumber += tens.indexOf(word) * 10;\r\n }\r\n }\r\n\r\n return result + currentNumber;\r\n}\r\n","import { computeExpression } from '..';\r\n\r\n/**\r\n * Calculate the gross amount including tax.\r\n * 计算含税金额。\r\n *\r\n * @param netAmount - The net amount (不含税金额).\r\n * @param taxRate - The tax rate in decimal form (税率,以小数形式表示).\r\n * @returns The gross amount including tax (含税金额).\r\n */\r\nexport function calculateGrossAmount(netAmount: number, taxRate: number): number {\r\n return Number(computeExpression(`${netAmount}*(1+${taxRate})`));\r\n}\r\n\r\n/**\r\n * Calculate the tax rate based on gross and net amounts.\r\n * 根据总金额和净金额计算税率。\r\n *\r\n * @param grossAmount - The gross amount (总金额).\r\n * @param netAmount - The net amount (净金额).\r\n * @returns The tax rate as a decimal (税率,以小数形式).\r\n */\r\nexport function calculateTaxRate(grossAmount: number, netAmount: number): number {\r\n return Number(computeExpression(`(${grossAmount} - ${netAmount}) / ${netAmount}`));\r\n}\r\n\r\n/**\r\n * Calculate the tax amount based on gross and net amounts.\r\n * 根据总金额和净金额计算税额。\r\n *\r\n * @param grossAmount - The gross amount (总金额).\r\n * @param netAmount - The net amount (净金额).\r\n * @returns The tax amount (税额).\r\n */\r\nexport function calculateTaxAmount(grossAmount: number, netAmount: number): number {\r\n return Number(computeExpression(`${grossAmount} - ${netAmount}`));\r\n}\r\n\r\n/**\r\n * Calculate the net amount excluding tax.\r\n * 计算裸税金额。\r\n *\r\n * @param grossAmount - The gross amount (含税金额).\r\n * @param taxRate - The tax rate in decimal form (税率,以小数形式表示).\r\n * @returns The net amount excluding tax (裸税金额).\r\n */\r\nexport function calculateNetAmount(grossAmount: number, taxRate: number): number {\r\n return Number(computeExpression(`${grossAmount} / (1 + ${taxRate})`));\r\n}\r\n\r\n/**\r\n * Calculate the price after applying a discount rate to the original price.\r\n * 根据原价和折扣率计算折扣后的价格。\r\n *\r\n * @param originalPrice - The original price (原价).\r\n * @param discountRate - The discount rate (折扣率).\r\n * @returns The price after discount (折扣后的价格).\r\n */\r\nexport function calculateDiscountPrice(originalPrice: number, discountRate: number): number {\r\n return Number(computeExpression(`${originalPrice} * (1 - ${discountRate})`));\r\n}\r\n\r\n/**\r\n * Calculate the discount amount based on the original price and discount rate.\r\n * 根据原价和折扣率计算折扣金额。\r\n *\r\n * @param originalPrice - The original price (原价).\r\n * @param discountRate - The discount rate (折扣率).\r\n * @returns The discount amount (折扣金额).\r\n */\r\nexport function calculateDiscountAmount(originalPrice: number, discountRate: number): number {\r\n return Number(computeExpression(`${originalPrice} * ${discountRate}`));\r\n}\r\n","import { type BigNumber, all, create } from 'mathjs';\r\nimport { isValidThousandSeparatedNumber } from '..';\r\n\r\nexport const math = create(all, { number: 'BigNumber' });\r\n\r\ninterface Parameters {\r\n [key: string]: number | string | BigNumber;\r\n}\r\n\r\n// 该函数将参数转为BigNumber类型\r\nexport function convertToBigNumbers(parameters: Parameters) {\r\n const convertedParameters: Parameters = {};\r\n for (const [key, value] of Object.entries(parameters)) {\r\n if (typeof value === 'number') {\r\n convertedParameters[key] = math.bignumber(value);\r\n } else if (typeof value === 'string') {\r\n convertedParameters[key] = isValidThousandSeparatedNumber(value)\r\n ? math.bignumber(Number(value.replaceAll(',', '')))\r\n : math.bignumber(value);\r\n }\r\n }\r\n return convertedParameters;\r\n}\r\n\r\n\r\nmath.createUnit({\r\n // 定义长度单位\r\n Li: { definition: '500 meter' }, // 里\r\n\r\n // 定义时间单位\r\n ShiChen: { definition: '2 hour' }, // 时辰\r\n\r\n // 定义质量单位\r\n Jin: { definition: '500 g' }, // 斤\r\n Liang: { definition: '50 g' }, // 两\r\n Qian: { definition: '5 g' }, // 钱\r\n\r\n // 定义容量单位\r\n Dou: { definition: '10 L' }, // 斗\r\n Hu: { definition: '10 Dou' }, // 斛\r\n\r\n // 定义面积单位\r\n Mu: { definition: '666.67 m^2' }, // 亩\r\n Shang: { definition: '1 hectare' }, // 垧\r\n\r\n // 定义长度单位\r\n Chi: { definition: '0.33333333333333333 m' }, // 尺\r\n Cun: { definition: '0.1 Chi' }, // 寸\r\n Zhang: { definition: '10 Chi' }, // 丈\r\n});\r\n","import { math } from '../math/config';\r\n\r\n/**\r\n * 生成等差数列。\r\n *\r\n * @param a 首项。\r\n * @param d 公差。\r\n * @param n 项数。\r\n * @returns 返回一个等差数列数组。\r\n */\r\nexport function arithmeticSequence(a: number, d: number, n: number): number[] {\r\n const sequence: number[] = [];\r\n for (let index = 0; index < n; index++) {\r\n sequence.push(math.add(a, index * d));\r\n }\r\n return sequence;\r\n}\r\n\r\n/**\r\n * 生成等比数列。\r\n *\r\n * @param a 首项。\r\n * @param r 公比。\r\n * @param n 项数。\r\n * @returns 返回一个等比数列数组。\r\n */\r\nexport function geometricSequence(a: number, r: number, n: number): number[] {\r\n const sequence: number[] = [];\r\n for (let index = 0; index < n; index++) {\r\n sequence.push(math.multiply(a, Number(math.pow(r, index))));\r\n }\r\n return sequence;\r\n}\r\n","import { TRIM_NON_NUMERIC_REGEX } from '../constants/regex';\r\nimport { CurrencyCode, CurrencyUnit } from '..';\r\n\r\n\r\nexport type CurrencyCodeType = keyof typeof CurrencyCode;\r\nexport type CurrencyStyleType = 'decimal' | 'currency' | 'unit' | 'percent';\r\nexport type CurrencyUnitType = `${CurrencyUnit}`;\r\n\r\n/**\r\n * @link https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat\r\n */\r\nexport interface CurrencyOptions extends Intl.NumberFormatOptions {\r\n locale?: CurrencyCodeType;\r\n style?: CurrencyStyleType;\r\n unit?: CurrencyUnitType;\r\n /**\r\n * 返回内容增加前缀\r\n */\r\n prefix?: string;\r\n /**\r\n * 返回内容增加后缀\r\n */\r\n suffix?: string;\r\n}\r\n\r\nconst defaultOptions: CurrencyOptions = {\r\n locale: CurrencyCode.CNY,\r\n style: 'decimal',\r\n};\r\n\r\n/**\r\n * 获取当前货币的千位分隔符和小数点符号\r\n * @param locale 货币代码\r\n * @returns 千位分隔符和小数点符号\r\n */\r\nexport const getCurrencySeparators = (\r\n locale: CurrencyCodeType = defaultOptions.locale!,\r\n): { groupSeparator: string; decimalSeparator: string } => {\r\n const formatter = new Intl.NumberFormat(locale, {\r\n style: 'currency',\r\n currency: locale,\r\n });\r\n const parts = formatter.formatToParts(1234567.89);\r\n let groupSeparator = '';\r\n let decimalSeparator = '';\r\n for (const part of parts) {\r\n if (part.type === 'group') {\r\n groupSeparator = part.value;\r\n } else if (part.type === 'decimal') {\r\n decimalSeparator = part.value;\r\n }\r\n }\r\n return { groupSeparator, decimalSeparator };\r\n};\r\n\r\n/**\r\n * 将货币字符串转换为数字\r\n * @param value 货币字符串\r\n * @param locale 货币代码\r\n * @returns 数字\r\n */\r\nexport const convertCurrencyToNumber = (\r\n value: string,\r\n locale: CurrencyCodeType = defaultOptions.locale!,\r\n): number => {\r\n if (typeof value !== 'string' || value.trim() === '') {\r\n throw new Error(`Invalid currency format: ${value}`);\r\n }\r\n const { groupSeparator, decimalSeparator } = getCurrencySeparators(locale);\r\n const groupSeparatorRegex = new RegExp(`\\\\${groupSeparator}`, 'g');\r\n const decimalSeparatorRegex = new RegExp(`\\\\${decimalSeparator}`);\r\n let cleanedValue = value.replace(groupSeparatorRegex, '');\r\n cleanedValue = cleanedValue.replace(decimalSeparatorRegex, '.');\r\n cleanedValue = cleanedValue.replace(TRIM_NON_NUMERIC_REGEX, '');\r\n const numericValue = parseFloat(cleanedValue);\r\n if (isNaN(numericValue)) {\r\n throw new Error(`Invalid currency format: ${value}`);\r\n }\r\n return numericValue;\r\n};\r\n\r\n/**\r\n * 格式化货币\r\n * @param value 数字或字符串\r\n * @param options 格式化选项\r\n * @returns 格式化后的货币字符串\r\n */\r\nexport const currency = (\r\n value: number | string | bigint,\r\n options: CurrencyOptions = defaultOptions,\r\n): string => {\r\n const {\r\n locale = CurrencyCode.CNY,\r\n style = 'decimal',\r\n unit,\r\n unitDisplay,\r\n notation,\r\n signDisplay,\r\n currencySign,\r\n currencyDisplay,\r\n minimumIntegerDigits,\r\n minimumFractionDigits,\r\n maximumFractionDigits,\r\n maximumSignificantDigits,\r\n minimumSignificantDigits,\r\n prefix,\r\n suffix,\r\n } = { ...defaultOptions, ...options };\r\n\r\n let numericValue: number | bigint = 0;\r\n\r\n if (typeof value === 'string' && value.trim() !== '') {\r\n numericValue = convertCurrencyToNumber(value, locale);\r\n } else if (typeof value === 'bigint' || typeof value === 'number') {\r\n numericValue = value;\r\n } else {\r\n throw new Error(`Invalid value type: ${typeof value} ${value}`);\r\n }\r\n\r\n return `${prefix ?? ''}${new Intl.NumberFormat(locale, {\r\n style,\r\n currency: locale,\r\n unit,\r\n unitDisplay,\r\n notation,\r\n signDisplay,\r\n currencySign,\r\n currencyDisplay,\r\n minimumIntegerDigits,\r\n minimumFractionDigits,\r\n maximumFractionDigits,\r\n maximumSignificantDigits,\r\n minimumSignificantDigits,\r\n }).format(numericValue)}${suffix ?? ''}`;\r\n};\r\n\r\n/**\r\n * 设置全局默认选项\r\n * @param options 默认选项\r\n */\r\ncurrency.setGlobalOptions = (options: CurrencyOptions) => {\r\n Object.assign(defaultOptions, options);\r\n};\r\n","import { parseNumberDetails } from '..';\r\n\r\n/**\r\n * 为数字填充零\r\n * @param value - 需要填充的数字\r\n * @param decimalLength - 小数位数\r\n * @returns 如果没有指定小数位数,返回原数字字符串;否则,返回填充后的数字字符串\r\n */\r\nexport const padZero = (value: number, decimalLength = 0): string => {\r\n const { originalString, decimalLength: currentDecimalPlaces } =\r\n parseNumberDetails(value);\r\n if (currentDecimalPlaces < decimalLength) {\r\n const zeroCount = decimalLength - currentDecimalPlaces;\r\n return `${originalString}${currentDecimalPlaces === 0 ? '.' : ''}${'0'.repeat(\r\n zeroCount,\r\n )}`;\r\n }\r\n return originalString;\r\n};\r\n","import { currency, padZero } from '..';\r\nimport { NumberDictionary } from '../../types/common';\r\nimport { convertToBigNumbers, math } from './config';\r\n\r\ninterface ComputeExpressionOptions {\r\n parameters?: NumberDictionary;\r\n decimalPlaces?: number;\r\n useThousandSeparator?: boolean;\r\n}\r\n\r\nexport function computeExpression(\r\n formula: string,\r\n options: ComputeExpressionOptions = {},\r\n): string {\r\n let result;\r\n\r\n // Check if parameters are provided (检查是否提供了参数)\r\n result =\r\n options.parameters === undefined\r\n ? math.evaluate(formula)\r\n : math.e