roundToNextSignificant static method

double roundToNextSignificant(
  1. double number
)

Implementation

static double roundToNextSignificant(double number) {
  if (number.isInfinite || number.isNaN || number == 0.0) return 0;

  final double d =
      (log(number < 0 ? -number : number) / ln10).ceil().toDouble();
  final int pw = 1 - d.toInt();
  final double magnitude = pow(10.0, pw) as double;
  final int shifted = (number * magnitude).round();
  return shifted / magnitude;
}