44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
/**
|
|
* 格式化价格
|
|
* @param {number} price - 价格数值
|
|
* @param {string} currency - 货币符号,默认为 ¥
|
|
* @returns {string} 格式化后的价格字符串
|
|
*/
|
|
export const formatPrice = (price, currency = '¥') => {
|
|
if (price == null || isNaN(price)) return `${currency}0`
|
|
|
|
// 将价格转换为数字
|
|
const numPrice = Number(price)
|
|
|
|
// 处理小数点,保留两位小数
|
|
const formattedPrice = numPrice.toFixed(2)
|
|
|
|
// 添加千位分隔符
|
|
const parts = formattedPrice.toString().split('.')
|
|
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',')
|
|
|
|
return `${currency}${parts.join('.')}`
|
|
}
|
|
|
|
/**
|
|
* 格式化数字
|
|
* @param {number} num - 需要格式化的数字
|
|
* @returns {string} 格式化后的数字字符串
|
|
*/
|
|
export const formatNumber = (num) => {
|
|
if (num == null || isNaN(num)) return '0'
|
|
|
|
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')
|
|
}
|
|
|
|
/**
|
|
* 格式化百分比
|
|
* @param {number} value - 需要格式化的值
|
|
* @param {number} decimals - 小数位数,默认为 2
|
|
* @returns {string} 格式化后的百分比字符串
|
|
*/
|
|
export const formatPercent = (value, decimals = 2) => {
|
|
if (value == null || isNaN(value)) return '0%'
|
|
|
|
return `${(Number(value) * 100).toFixed(decimals)}%`
|
|
}
|