formatFloat function
Implementation
String formatFloat(String fmt, num value) {
if (fmt.isEmpty) return '$value';
// splits the integer/decimal mask parts
final dot = fmt.indexOf(".");
final intMask = dot < 0 ? fmt : fmt.substring(0, dot);
final fracMask = dot < 0 ? '' : fmt.substring(dot + 1);
final fracDigits = fracMask.replaceAll(RegExp("[^0#]"), "").length;
var s = value.toStringAsFixed(fracDigits);
var neg = s.startsWith("-");
if (neg) s = s.substring(1);
var intPart = fracDigits > 0 ? s.substring(0, s.indexOf(".")) : s;
final fracPart = fracDigits > 0 ? s.substring(s.indexOf(".") + 1) : "";
// thousands separator (when the mask contains ',')
if (intMask.contains(",")) {
final buf = StringBuffer();
for (var i = 0; i < intPart.length; i++) {
if (i > 0 && (intPart.length - i) % 3 == 0) buf.write(",");
buf.write(intPart[i]);
}
intPart = buf.toString();
}
// minimum digit count for the integer part (the count of '0')
final minInt = intMask.replaceAll(RegExp("[^0]"), "").length;
while (intPart.replaceAll(",", "").length < minInt) {
intPart = '0$intPart';
}
var result = intPart;
if (fracDigits > 0) result = '$result$decimalSeparator$fracPart';
return neg ? '-$result' : result;
}