formatDouble method
String
formatDouble(
{ - int maxDigits = 2,
- bool keepFixedDigits = false,
})
Implementation
String formatDouble({int maxDigits = 2, bool keepFixedDigits = false}) {
if (this == null) return "";
double value = this!.toDouble();
int p = pow(10, maxDigits).toInt();
double rounded = (value * p).roundToDouble() / p;
String str = rounded.toString();
// 处理小数点
int index = str.indexOf('.');
if (index == -1) {
// 没有小数点时
return keepFixedDigits ? "$str.${'0' * maxDigits}" : str;
} else {
// 有小数点时
String integerPart = str.substring(0, index);
String decimalPart = str.substring(index + 1);
if (keepFixedDigits) {
// 保证固定位数,不足补零
if (decimalPart.length < maxDigits) {
decimalPart = decimalPart.padRight(maxDigits, '0');
} else {
decimalPart = decimalPart.substring(0, maxDigits);
}
return "$integerPart.$decimalPart";
} else {
// 移除末尾的零
while (decimalPart.endsWith('0')) {
decimalPart = decimalPart.substring(0, decimalPart.length - 1);
}
return decimalPart.isEmpty ? integerPart : "$integerPart.$decimalPart";
}
}
}