roundToSignificantDigits method
Rounds to significantDigits significant digits.
significantDigits must be positive.
Implementation
@useResult
double roundToSignificantDigits(int significantDigits) {
if (significantDigits < 1) {
throw ArgumentError(_kErrSignificantDigitsPositive, _kParamSignificantDigits);
}
final double x = toDouble();
if (x == 0) return 0;
final double magnitude = x.abs();
final int e = magnitude >= 1
? math.log(magnitude) ~/ math.ln10
: -(math.log(magnitude) / math.ln10).ceil();
final double scale = math.pow(10.0, significantDigits - 1 - e).toDouble();
return (x * scale).round() / scale;
}