話不多說(shuō)直接上代碼:
/**
* target 要轉(zhuǎn)換的數(shù)字
* postion 要保留的位數(shù)
* isCrop true 直接裁剪 false 四舍五入
*/
String formartNum(num target, int postion, {bool isCrop = false}) {
String t = target.toString();
// 如果要保留的長(zhǎng)度小于等于0 直接返回當(dāng)前字符串
if (postion < 0) {
return t;
}
if (t.contains(".")) {
String t1 = t.split(".").last;
if (t1.length >= postion) {
if (isCrop) {
// 直接裁剪
return t.substring(0, t.length - (t1.length - postion));
} else {
// 四舍五入
return target.toStringAsFixed(postion);
}
} else {
// 不夠位數(shù)的補(bǔ)相應(yīng)個(gè)數(shù)的0
String t2 = "";
for (int i = 0; i < postion - t1.length; i++) {
t2 += "0";
}
return t + t2;
}
} else {
// 不含小數(shù)的部分補(bǔ)點(diǎn)和相應(yīng)的0
String t3 = postion>0?".":"";
for (int i = 0; i < postion; i++) {
t3 += "0";
}
return t + t3;
}
}
測(cè)試:
log(formartNum(10, 0));
log(formartNum(10, 1));
log(formartNum(100.0, 2));
log(formartNum(10.999, 2, isCrop: true));
log(formartNum(10.991, 1, isCrop: true));
log(formartNum(10.001, 5));
log(formartNum(10.008, 6));
打印結(jié)果:
flutter: 10
flutter: 10.0
flutter: 100.00
flutter: 10.99
flutter: 10.9
flutter: 10.00100
flutter: 10.008000