| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- /**
- * 金额单位转换:元 -> 万元
- * @param val 原始金额(元)
- * @param digit 保留小数位数,默认为 2
- * @returns 转换后的字符串(万元)
- */
- export const formatAmount = (val: any, digit: number = 2) => {
- if (val === undefined || val === null || val === '') return '0.00';
- const num = Number(val);
- if (isNaN(num)) return '0.00';
- return (num / 10000).toFixed(digit);
- };
- /**
- * 金额千分位格式化
- * @param val 原始金额
- * @param digit 保留小数位数
- * @returns 格式化后的字符串 (如: 1,234.56)
- */
- export const formatWithComma = (val: any, digit: number = 2) => {
- if (val === undefined || val === null || val === '') return '0.00';
- const num = Number(val);
- if (isNaN(num)) return '0.00';
-
- const options = {
- minimumFractionDigits: digit,
- maximumFractionDigits: digit,
- };
- return num.toLocaleString('en-US', options);
- };
- /**
- * 限制输入正数且最多两位小数的格式化工具
- * 常用于 uv-input 的 formatter 属性
- * @param val 输入字符串
- * @returns 格式化后的字符串
- */
- export const amountInputFormatter = (val: string) => {
- if (!val) return '';
- // 1. 仅保留数字和小数点
- let formatted = val.replace(/[^\d.]/g, '');
- // 2. 保证只有一个小数点
- const dotIndex = formatted.indexOf('.');
- if (dotIndex !== -1) {
- const mainPart = formatted.substring(0, dotIndex);
- let decimalPart = formatted.substring(dotIndex + 1).replace(/\./g, ''); // 移除多余小数点
- // 3. 限制两位小数
- if (decimalPart.length > 2) {
- decimalPart = decimalPart.substring(0, 2);
- }
- formatted = `${mainPart}.${decimalPart}`;
- }
- return formatted;
- };
|