number function
- num value,
- HatangLocale locale, {
- int decimals = 0,
Groups digits: 1.234.567 (vi) or 1,234,567 (en); at most decimals
fraction digits.
Implementation
String number(num value, HatangLocale locale, {int decimals = 0}) {
final negative = value < 0;
final abs = value.abs();
final fixed = abs.toStringAsFixed(decimals);
final dot = fixed.indexOf('.');
final intPart = dot < 0 ? fixed : fixed.substring(0, dot);
final frac = dot < 0 ? '' : fixed.substring(dot + 1);
final sep = locale == HatangLocale.vi ? '.' : ',';
final b = StringBuffer();
for (var i = 0; i < intPart.length; i++) {
if (i > 0 && (intPart.length - i) % 3 == 0) b.write(sep);
b.write(intPart[i]);
}
var out = b.toString();
if (frac.isNotEmpty) out = '$out${locale == HatangLocale.vi ? ',' : '.'}$frac';
return negative ? '-$out' : out;
}