Я использую эту функцию, чтобы преобразовать размер файла в байтах в размер файла, доступного для человека:
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 потеряет точность. Я что-то совершенно недопонимаю или есть лучший способ сделать это?