数字工具 (Number)
@pt/utils/modules/number 提供了数字处理相关的工具函数。
formatNumber
格式化数字(千分位)。
typescript
import { formatNumber } from '@pt/utils/modules/number';
formatNumber(1234567.89, {
decimals: 2,
decimalSeparator: '.',
thousandsSeparator: ','
}); // '1,234,567.89'formatCurrency
格式化货币。
typescript
import { formatCurrency } from '@pt/utils/modules/number';
formatCurrency(1234.56, {
currency: 'CNY',
locale: 'zh-CN',
decimals: 2
}); // '¥1,234.56'random
生成随机数。
typescript
import { random } from '@pt/utils/modules/number';
random(1, 10); // 生成1-10之间的整数
random(1, 10, false); // 生成1-10之间的浮点数clamp
限制数字在指定范围内。
类型签名:
typescript
function clamp(num: number, min: number, max: number): number参数:
num: 要限制的数字min: 最小值max: 最大值
示例:
typescript
import { clamp } from '@pt/utils/modules/number';
clamp(5, 0, 10); // 5
clamp(-5, 0, 10); // 0
clamp(15, 0, 10); // 10
clamp(7.5, 0, 10); // 7.5randomNum
生成指定范围内的随机整数。
类型签名:
typescript
function randomNum(min: number, max: number): number参数:
min: 最小值max: 最大值
示例:
typescript
import { randomNum } from '@pt/utils/modules/number';
randomNum(1, 100); // 生成 1-100 之间的随机整数transformNumberUnit
将较大的数字转换为带单位的格式(K、M、B、T、P)。
类型签名:
typescript
function transformNumberUnit(data?: string | number): string参数:
data: 要转换的数字
单位说明:
K: 千(1,000)M: 百万(1,000,000)B: 十亿(1,000,000,000)T: 万亿(1,000,000,000,000)P: 千万亿(1,000,000,000,000,000)
示例:
typescript
import { transformNumberUnit } from '@pt/utils/modules/number';
transformNumberUnit(0); // '0'
transformNumberUnit(999); // '999'
transformNumberUnit(1000); // '1K'
transformNumberUnit(1500); // '1.5K'
transformNumberUnit(1000000); // '1M'
transformNumberUnit(1234567); // '1.23M'
transformNumberUnit(1000000000); // '1B'formatBytes
将字节数格式化为人类可读的文件大小格式。
类型签名:
typescript
function formatBytes(bytes: number, decimals?: number): string参数:
bytes: 字节数decimals: 小数位数,默认 2
示例:
typescript
import { formatBytes } from '@pt/utils/modules/number';
formatBytes(1024); // '1.00 KB'
formatBytes(1234); // '1.21 KB'
formatBytes(123456789); // '117.74 MB'
formatBytes(1234567890123456); // '1.10 PB'
formatBytes(1024, 0); // '1 KB'transformFileSize
转换文件大小(简化版本)。
类型签名:
typescript
function transformFileSize(bytes?: number): string | number参数:
bytes: 字节数
返回值:
- 小于 1MB: 返回 KB 格式
- 1MB - 1GB: 返回 MB 格式
- 大于 1GB: 返回 GB 格式
- undefined: 返回 0
示例:
typescript
import { transformFileSize } from '@pt/utils/modules/number';
transformFileSize(512); // '0.50 KB'
transformFileSize(100); // '0.01 KB' (最小显示 0.01 KB)
transformFileSize(1024 * 1024); // '1.00 MB'
transformFileSize(1024 * 1024 * 1024); // '1.00 GB'
transformFileSize(undefined); // 0使用场景示例
文件上传进度显示
typescript
import { formatBytes } from '@pt/utils/modules/number';
function showUploadProgress(loaded: number, total: number) {
const progress = (loaded / total) * 100;
const loadedSize = formatBytes(loaded);
const totalSize = formatBytes(total);
console.log(`上传进度: ${progress.toFixed(1)}% (${loadedSize} / ${totalSize})`);
// 输出: 上传进度: 45.2% (452.34 MB / 1.00 GB)
}数据统计展示
typescript
import { transformNumberUnit } from '@pt/utils/modules/number';
function showStatistics(views: number, likes: number) {
return {
views: transformNumberUnit(views),
likes: transformNumberUnit(likes)
};
}
showStatistics(1234567, 89012);
// { views: '1.23M', likes: '89.01K' }价格显示
typescript
import { formatCurrency } from '@pt/utils/modules/number';
function displayPrice(price: number, currency: string = 'CNY') {
return formatCurrency(price, { currency });
}
displayPrice(99.99); // '¥99.99'
displayPrice(99.99, 'USD'); // '$99.99'