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();
}
我想在我的代码中实现以下目标,但似乎找不到合适的解决方案: 我需要始终显示数字的 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();
}