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;
}