fastHumanizeIecBytes function

String fastHumanizeIecBytes(
  1. double bytes, {
  2. int precision = 2,
})

Ultra-fast formatter for simple IEC bytes use-cases. Units: B, KiB, MiB, GiB, TiB, PiB.

Implementation

String fastHumanizeIecBytes(double bytes, {int precision = 2}) {
  const tib = 1099511627776.0; // 1024^4
  const gib = 1073741824.0; // 1024^3
  const mib = 1048576.0; // 1024^2
  const kib = 1024.0; // 1024^1
  String sym;
  double base;
  if (bytes >= tib) {
    base = tib;
    sym = 'TiB';
  } else if (bytes >= gib) {
    base = gib;
    sym = 'GiB';
  } else if (bytes >= mib) {
    base = mib;
    sym = 'MiB';
  } else if (bytes >= kib) {
    base = kib;
    sym = 'KiB';
  } else {
    base = 1.0;
    sym = 'B';
  }
  final v = bytes / base;
  final s = _toFixedTrim(v, precision);
  return '$s $sym';
}