toStringAsSmartRound method

String toStringAsSmartRound({
  1. int maxPrecision = 2,
})

Implementation

String toStringAsSmartRound({final int maxPrecision = 2}) {
  final String str = toString();
  try {
    if (str.contains(".")) {
      final List<String> split = str.split("");
      final List<String> mantissa = <String>[];
      final int periodIndex = str.indexOf(".");
      final String wholePart = str.substring(0, periodIndex);
      int numChars = 0;
      for (int i = periodIndex + 1; i < str.length; i++) {
        if (numChars >= maxPrecision) break;
        final String char = split[i];
        mantissa.add(char);
        numChars++;
      }
      if (mantissa.isNotEmpty) {
        int i = mantissa.length - 1;
        while (mantissa.isNotEmpty) {
          if (mantissa[i] != "0") break;
          i--;
          mantissa.removeLast();
        }
        if (mantissa.isNotEmpty) {
          return "$wholePart.${mantissa.join()}";
        }
      }
      return wholePart;
    }
  } catch (e) {}
  return str;
}