codev / desktop /src /lib /formatBytes.ts
chenbhao's picture
feat: desktop
1f21206
Raw
History Blame
488 Bytes
export function formatBytes(bytes: number): string {
if (!Number.isFinite(bytes) || bytes <= 0) return '0 B'
const units = ['B', 'KB', 'MB', 'GB', 'TB']
let value = bytes
let unitIndex = 0
while (value >= 1024 && unitIndex < units.length - 1) {
value /= 1024
unitIndex += 1
}
const maximumFractionDigits = value >= 10 || unitIndex === 0 ? 0 : 1
return `${new Intl.NumberFormat(undefined, {
maximumFractionDigits,
}).format(value)} ${units[unitIndex]}`
}