Как преобразовать отрицательные байтовые значения в mb, gb et c.? - PullRequest
0 голосов
/ 21 февраля 2020

В моем приложении angular я преобразую байты в МБ , ГБ и т. Д. c.

Я получаю данные из бэкэнда.
У меня есть например: Все оперативной памяти, Доступный оперативной памяти и Используемый оперативной памяти.
Все значения хранятся как долго в нашем случае. Я просто конвертирую эти значения.
Для «Доступного барана» формула «AllRam - UsedRam» и получение минус значения считается нормальным.

Но в случае отрицательных значений это не работает.

Я использую функцию:

 const SIZES = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];

 formatBytes(bytes, decimals = 1) {
    for (var i = 0, r = bytes, b = 1024; r > b; i++) r /= b;         
    return `${parseFloat(r.toFixed(decimals))} ${SIZES[i]}`;
  }

Попытка добавить оператор if с байтами <0 </strong>, но это не помогло.

1 Ответ

1 голос
/ 21 февраля 2020

Я думаю, Math.abs() может решить проблему:

const suffixes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
      formatBytes = (n, decimals) => {
        const suffixIndex = suffixes.findIndex((_,i) => Math.abs(n) < 1024**i)-1
        return `${((0|10**decimals*n/1024**suffixIndex)/10**decimals)} ${suffixes[suffixIndex]}`
      }
      
console.log(formatBytes(-38750,2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...