Dart - NumberFormat Dart - NumberFormat dart dart

Dart - NumberFormat


Actually, I think it's easier to go with truncateToDouble() and toStringAsFixed() and not use NumberFormat at all:

n.toStringAsFixed(n.truncateToDouble() == n ? 0 : 2);

So for example:

main() {  double n1 = 15.00;  double n2 = 15.50;  print(format(n1));  print(format(n2));}String format(double n) {  return n.toStringAsFixed(n.truncateToDouble() == n ? 0 : 2);}

Prints to console:

1515.50


Edit: The solution posted by Martin seens to be a better one

I don't think this can be done directly. You'll most likely need something like this:

final f = new NumberFormat("###.00");String format(num n) {  final s = f.format(n);  return s.endsWith('00') ? s.substring(0, s.length - 3) : s;}


Not very easily. Interpreting what you want as printing zero decimal places if it's an integer value and precisely two if it's a float, you could do

var forInts = new NumberFormat();var forFractions = new NumberFormat();forFractions.minimumFractionDigits = 2;forFractions.maximumFractionDigits = 2;format(num n) =>     n == n.truncate() ? forInts.format(n) : forFractions.format(n);print(format(15.50));print(format(15.0));

But there's little advantage in using NumberFormat for this unless you want the result to print differently for different locales.