LINUX.ORG.RU

История изменений

Исправление unfo, (текущая версия) :

Можно и логарифмом, можно и битовыми сдвигами. Можно и попроще, что-то вроде такого (Nim не знаю, сильно тапками не кидайтесь):

const 
  KB = 1024
  MB = KB * KB
  GB = MB * KB
  TB = GB * KB
  PB = TB * KB

proc formatBytesToReadableSize*(bytes: int): (float, string) =
  let floatValue = bytes.float

  case bytes
  of bytes < KB:
    (floatValue, "b")
  of bytes < MB:
    (bytes / KB, "KB")
  of bytes < GB:
    (bytes / MB, "MB")
  of bytes < TB:
    (bytes / GB, "GB")
  of bytes < PB:
    (bytes / TB, "TB")
  else:
    (floatValue, ".")

Исправление unfo, :

Можно и логарифмом, можно и битовыми сдвигами. Можно и попроще, что-то вроде такого (Nim не знаю, сильно тапками не кидайтесь):

const 
  KB = 1024
  MB = KB * KB
  GB = MB * KB
  TB = GB * KB
  PB = TB * KB

proc formatBytesToReadableSize*(bytes: int): (float, string) =
  let floatValue = bytes.float

  case bytes
  of bytes < KB:
    (floatValue, "b")
  of bytes < MB:
    (floatValue / KB, "KB")
  of bytes < GB:
    (floatValue / MB, "MB")
  of bytes < TB:
    (floatValue / GB, "GB")
  of bytes < PB:
    (floatValue / TB, "TB")
  else:
    (floatValue, ".")

Исходная версия unfo, :

Можно и логарифмом, можно и битовыми сдвигами. Можно и попроще, что-то вроде такого (Nim не знаю, сильно тапками не кидайтесь):

const 
  KB = 1024
  MB = KB * KB
  GB = MB * KB
  TB = GB * KB
  PB = TB * KB
  EB = PB * KB

proc formatBytesToReadableSize*(bytes: int): (float, string) =
  let floatValue = bytes.float

  case bytes
  of bytes < KB:
    (floatValue, "b")
  of bytes < MB:
    (floatValue / KB, "KB")
  of bytes < GB:
    (floatValue / MB, "MB")
  of bytes < TB:
    (floatValue / GB, "GB")
  of bytes < PB:
    (floatValue / TB, "TB")
  of bytes < EB:
    (floatValue / PB, "PB")
  else:
    (floatValue, ".")