Dart - Round Double to N Decimal Places

This tutorial gives you examples of how to round double to N decimal places precision in Dart.

In Dart, If you have a double and you need to set a certain precision to the number while rounding the value at the same time, you can use the following method.

  String toStringAsFixed(int fractionDigits);

The method has one parameter fractionDigits which is used to set how many decimal points in the output. If the given fractionDigits is 0, the result will be without decimal point. It must be greater than or equal to 0, otherwise it will throw RangeError.

The method has a limitation regarding to maximum value supported. If the value is greater than 10^21, it will return an exponential representation computed by toStringAsExponential()

Below are some examples along with the output for each line commented out at the end of the line.

  print(10.123.toStringAsFixed(0)); // 10
  print(10.1.toStringAsFixed(2)); // 10.10
  print(10.123.toStringAsFixed(2)); // 10.12
  print(10.125.toStringAsFixed(2)); // 10.13
  print(10.129.toStringAsFixed(2)); // 10.13
  print(10.135.toStringAsFixed(2)); // 10.13
  print(10.1201.toStringAsFixed(3)); // 10.120

Currently, Dart only supports half up rounding mode which means other rounding modes such as half up, half even, ceiling, and floor are not supported.

At this moment, you can set the decimal precision only when formatting the value to String. If you parse the result to double again, the decimal precision may change.

That's how to round double with a certain decimal precision. You may also be interested to know about how to convert between double and int in Dart.