Преобразование размера файла в байтах в удобочитаемую строку -

Я использую эту функцию для преобразования размера файла в байтах в человекочитаемый -размер файла:

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 теряет точность. Я что-то не понимаю или есть лучший способ сделать это?

222
задан Hristo 23 December 2017 в 11:51
поделиться