function FormatBytes(bytes, decimals = 2) {
if (!+bytes) return '0 Bytes'
const kb = 1024
decimals = decimals < 0 ? 0 : decimals
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
const index = Math.floor(Math.log(bytes) / Math.log(kb))
return `${parseFloat((bytes / Math.pow(kb, index)).toFixed(decimals))} ${sizes[index]}`
}
console.log(FormatBytes(8913213499984251734634652));
console.log(FormatBytes(7873263499984734634652));
console.log(FormatBytes(58732639984734634652));
console.log(FormatBytes(6199984734634652));
console.log(FormatBytes(99984734634652));
console.log(FormatBytes(9823453784599));
console.log(FormatBytes(7124362542));
console.log(FormatBytes(23746178));
console.log(FormatBytes(1048576));
console.log(FormatBytes(1024000));
console.log(FormatBytes(873445));
console.log(FormatBytes(1024));
console.log(FormatBytes(978));
console.log(FormatBytes(13));
console.log(FormatBytes(0));
/*
run:
7.37 YB
6.67 ZB
50.94 EB
5.51 PB
90.94 TB
8.93 TB
6.64 GB
22.65 MB
1 MB
1000 KB
852.97 KB
1 KB
978 Bytes
13 Bytes
0 Bytes
*/