toFixed static method
小数位控制 istrunc 默认true 超出截取,低于补0. false直接四舍五入
Implementation
static toFixed(v, int digits, {istrunc = true}) {
if (istrunc) {
//截断
String numStr = v.toString();
final maxLength = numStr.length;
int dotIndex = numStr.indexOf('.');
if (dotIndex == -1) {
if(digits>0){
return num.parse(numStr).toStringAsFixed(digits); // 无小数 补0返回
}else{
return numStr; // 无精度 直接返回
}
} else {
//截取整数部分
String integerPart = numStr.substring(0, dotIndex);
//截取小数部分
String decimalPart = numStr.substring(
dotIndex + 1, Tools.min(maxLength, dotIndex + 1 + digits));
//拼接结果
String r =
decimalPart.isNotEmpty ? '$integerPart.$decimalPart' : integerPart;
if (decimalPart.length < digits) {
//精度不够,通过toFixed补0
return v.toStringAsFixed(digits);
} else {
//直接返回
return r;
}
}
} else {
//四舍五入
return v.toStringAsFixed(digits);
}
}