Flutter 浮点数舍入

Flutter float number rounding

我想在我的代码中实现以下目标,但似乎找不到合适的解决方案: 我需要始终显示数字的 6 位数字的代码,无论是大于 999999 的整数还是小于 0 的浮点数。

100000 -> 100000
1000000 -> 100000

10000.0 -> 10000
100.01111 -> 100.011

0.000001 -> 0
0.000011 -> 0.00001

在评论中的一些帮助下,我找到了适合我的解决方案。如果有人有更优雅的方法,请分享它。

int desiredPrecision = 6;
int numberOfDigitsOnTheLeft = val.toInt().toString().length;
String sixDigitString = val.toStringAsFixed(desiredPrecision-numberOfDigitsOnTheLeft);

作为选项

void main() {
    print(_normalizeNum(10000.0));
    print(_normalizeNum(100000));
    print(_normalizeNum(1000000));
    print(_normalizeNum(10000.0));
    print(_normalizeNum(100.01111));
    print(_normalizeNum(0.000001));
    print(_normalizeNum(0.000011));
}

String _normalizeNum(num d) {
  d = d.clamp(double.negativeInfinity, 999999);
  d = num.parse(d.toStringAsFixed(6).substring(0, 7));
  if (d == d.toInt()) {
    d = d.toInt();
  }
  return d.toString();
}