Files
vue3-element-admin/src/utils/format.ts

87 lines
2.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 数据格式化相关工具函数
*/
/**
* 格式化增长率
* 保留两位小数,去掉末尾的 0取绝对值
*
* @param growthRate 增长率(小数形式,如 0.15 表示 15%
* @returns 格式化后的增长率字符串
*
* @example
* ```ts
* formatGrowthRate(0.1234); // "12.34%"
* formatGrowthRate(0.1000); // "10%"
* formatGrowthRate(0); // "-"
* formatGrowthRate(-0.05); // "5%"(取绝对值)
* ```
*/
export function formatGrowthRate(growthRate: number): string {
if (growthRate === 0) {
return "-";
}
const formattedRate = Math.abs(growthRate * 100)
.toFixed(2)
.replace(/\.?0+$/, "");
return formattedRate + "%";
}
/**
* 格式化文件大小
* @param bytes 字节数
* @param decimals 保留小数位数,默认 2
* @returns 格式化后的文件大小字符串
*
* @example
* ```ts
* formatFileSize(1024); // "1 KB"
* formatFileSize(1048576); // "1 MB"
* formatFileSize(1234567); // "1.18 MB"
* ```
*/
export function formatFileSize(bytes: number, decimals: number = 2): string {
if (bytes === 0) return "0 Bytes";
const k = 1024;
const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB"];
const i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + " " + sizes[i];
}
/**
* 格式化数字,添加千分位分隔符
* @param num 数字
* @returns 格式化后的字符串
*
* @example
* ```ts
* formatNumber(1234567); // "1,234,567"
* formatNumber(1234567.89); // "1,234,567.89"
* ```
*/
export function formatNumber(num: number): string {
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
/**
* 格式化金额(人民币)
* @param amount 金额
* @param decimals 保留小数位数,默认 2
* @returns 格式化后的金额字符串
*
* @example
* ```ts
* formatCurrency(1234567); // "¥1,234,567.00"
* formatCurrency(1234567.8); // "¥1,234,567.80"
* formatCurrency(1234567, 0); // "¥1,234,567"
* ```
*/
export function formatCurrency(amount: number, decimals: number = 2): string {
const formatted = amount.toFixed(decimals).replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return "¥" + formatted;
}