numberOfIntegerDigits method

int numberOfIntegerDigits (dynamic number)

Implementation

static int numberOfIntegerDigits(number) {
  var simpleNumber = number.toDouble().abs();
  // It's unfortunate that we have to do this, but we get precision errors
  // that affect the result if we use logs, e.g. 1000000
  if (simpleNumber < 10) return 1;
  if (simpleNumber < 100) return 2;
  if (simpleNumber < 1000) return 3;
  if (simpleNumber < 10000) return 4;
  if (simpleNumber < 100000) return 5;
  if (simpleNumber < 1000000) return 6;
  if (simpleNumber < 10000000) return 7;
  if (simpleNumber < 100000000) return 8;
  if (simpleNumber < 1000000000) return 9;
  if (simpleNumber < 10000000000) return 10;
  if (simpleNumber < 100000000000) return 11;
  if (simpleNumber < 1000000000000) return 12;
  if (simpleNumber < 10000000000000) return 13;
  if (simpleNumber < 100000000000000) return 14;
  if (simpleNumber < 1000000000000000) return 15;
  if (simpleNumber < 10000000000000000) return 16;
  // We're past the point where being off by one on the number of digits
  // will affect the pattern, so now we can use logs.
  return max(1, (log(simpleNumber) / _ln10).ceil());
}