Я использую эту функцию для преобразования размера файла в байтах в человекочитаемый -размер файла:
function getReadableFileSizeString(fileSizeInBytes) {
var i = -1;
var byteUnits = [' kB', ' MB', ' GB', ' TB', 'PB', 'EB', 'ZB', 'YB'];
do {
fileSizeInBytes = fileSizeInBytes / 1024;
i++;
} while (fileSizeInBytes > 1024);
return Math.max(fileSizeInBytes, 0.1).toFixed(1) + byteUnits[i];
};
Однако, кажется, что это не на 100% точно. Например:
getReadableFileSizeString(1551859712); // output is "1.4 GB"
Разве это не должно быть "1.5 GB"
? Похоже, деление на 1024 теряет точность. Я что-то не понимаю или есть лучший способ сделать это?