/* * @Author: code4eat awesomedema@gmail.com * @Date: 2022-12-14 14:14:32 * @LastEditors: code4eat awesomedema@gmail.com * @LastEditTime: 2025-04-30 14:52:04 * @FilePath: /BudgetManaSystem/src/utils/format.ts * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ // 示例方法,没有实际意义 export function trim(str: string) { return str.trim(); } // 定义金额格式化选项的接口 interface FormatMoneyOptions { decimalPlaces?: number; // 指定小数位数 useThousandSeparator?: boolean; // 是否使用千分号 } //金额数字转换 export function formatMoneyNumber(num: number | string | undefined | null, options?: FormatMoneyOptions) { if (num === undefined || num === null || num === '') { return '-'; // 对于空值或未定义值,返回 "-" } const numberToFormat = Number(num); if (isNaN(numberToFormat)) { return String(num); // 如果转换后不是有效数字,则返回原始字符串形式 } // 默认小数位数为2,除非在选项中指定 const minimumFractionDigits = options?.decimalPlaces !== undefined ? options.decimalPlaces : 2; const maximumFractionDigits = options?.decimalPlaces !== undefined ? options.decimalPlaces : 2; // 默认使用千分号,除非在选项中明确设置为 false const useGrouping = options?.useThousandSeparator === true; return new Intl.NumberFormat('en-US', { minimumFractionDigits: minimumFractionDigits, maximumFractionDigits: maximumFractionDigits, useGrouping: useGrouping, // 控制是否使用千分号 }).format(numberToFormat); } export function formatToPercentage(num: number) { if (typeof num !== 'number' || isNaN(num)) { return num; } return new Intl.NumberFormat('en-US', { style: 'percent', minimumFractionDigits: 2, maximumFractionDigits: 2, }).format(num); }