Fixed human-readable file size representation (#137)

(as it follows units of IEC 60027-2 A.2 )
This commit is contained in:
0x6d61726b
2024-03-03 15:48:56 +01:00
committed by GitHub
parent f763b9657f
commit 51bcd82ea7
5 changed files with 20 additions and 13 deletions

View File

@@ -42,14 +42,21 @@ export function toFormatArgs(codes: string[]): string {
return ''
}
export const formatGiB = (bytes: number) =>
`${(bytes / 1_000_000_000).toFixed(0)}GiB`
export function formatSize(bytes: number): string {
const threshold = 1024
const units = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']
export const roundMiB = (bytes: number) =>
`${(bytes / 1_000_000).toFixed(2)} MiB`
let i = 0
while (bytes >= threshold) {
bytes /= threshold
i = i + 1
}
return `${bytes.toFixed(i == 0 ? 0 : 2)} ${units.at(i)}`
}
export const formatSpeedMiB = (val: number) =>
`${roundMiB(val)}/s`
`${(val / 1_048_576).toFixed(2)} MiB/s`
export const datetimeCompareFunc = (a: string, b: string) =>
new Date(a).getTime() - new Date(b).getTime()