Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как перевести байты в КБ, МБ и ГБ

Короткий ответ

Делите на 1024, пока число не станет меньше 1024, и каждый раз переходите к следующей единице:

const formatBytes = (bytes) => {
  const units = ['B', 'KB', 'MB', 'GB', 'TB'];
  let index = 0;
  while (bytes >= 1024 && index < units.length - 1) {
    bytes /= 1024;
    index++;
  }
  return `${Number(bytes.toFixed(1))} ${units[index]}`;
};
 
console.log(formatBytes(500));
console.log(formatBytes(1536));
console.log(formatBytes(5368709120));

Результат:

500 B
1.5 KB
5 GB

Через Intl.NumberFormat

Intl.NumberFormat знает единицы kilobyte, megabyte и пишет их на нужном языке:

const format = new Intl.NumberFormat('en-US', {
  style: 'unit',
  unit: 'megabyte',
  unitDisplay: 'short',
  maximumFractionDigits: 1,
});
 
console.log(format.format(3.456));

Результат:

3.5 MB

Частая ошибка

toFixed() возвращает строку и оставляет ноль в конце. Number() его убирает:

console.log((2).toFixed(1), Number((2).toFixed(1)));

Результат:

2.0 2

Функции из этого ответа

  • Math.floor — Округляет число вниз до целого.
  • Number.prototype.toFixed — Форматирует число с заданным количеством знаков после запятой.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.