formatDigitalMillimeter static method
数字千分位格式化
num 需要进行格式化数字
point 小数点位数
nullText 为空或不是数字时默认展示文字
Implementation
static String formatDigitalMillimeter(
num? num, {
int point = 2,
String nullText = '0',
}) {
if (num is double || num is int) {
final String str = double.parse(num.toString()).toString();
// 分开截取
final List<String> sub = str.split('.');
// 处理值
final List<String> val = List.from(sub[0].split(''));
// 处理点(fixed-无小数点时截取报错)
List<String> points = sub.length > 1 ? List.from(sub[1].split('')) : [];
//处理分割符
// ignore: avoid_multiple_declarations_per_line
for (int index = 1, i = val.length - 1; i >= 0; index++, i--) {
// 除以三没有余数、不等于零并且不等于1 就加个逗号
if (index % 3 == 0 && i != 0) {
val[i] = ',${val[i]}';
}
}
// 处理小数点
for (int i = 0; i <= point - points.length; i++) {
points.add('0');
}
//如果大于长度就截取
if (points.length > point) {
// 截取数组
points = points.sublist(0, point);
}
// 判断是否有长度
if (points.isNotEmpty) {
return '${val.join()}.${points.join()}';
} else {
return val.join();
}
} else {
return nullText;
}
}