Shu*_*oni 7 format numbers dart dart-pub flutter
我必须在 dart 中将数字格式化为千位分隔符。我有这样的数字:
16987
13876
456786
Run Code Online (Sandbox Code Playgroud)
我想将它们格式化为:
16,987
13,876
4,56,786
Run Code Online (Sandbox Code Playgroud)
小智 15
您可以使用 NumberFormat 在 ICU 格式化模式中传递自定义格式,请查看NumberFormat。
import 'package:intl/intl.dart';
void main() {
var formatter = NumberFormat('#,##,000');
print(formatter.format(16987));
print(formatter.format(13876));
print(formatter.format(456786));
}
Run Code Online (Sandbox Code Playgroud)
输出
16,987
13,876
4,56,786
Run Code Online (Sandbox Code Playgroud)
我发现intl包中的NumberFormat类非常有用,因为它提供了不同的方法来格式化数字。
默认情况下,NumberFormat 类使用默认的美国语言环境以百万为单位格式化数字,我们可以使用印度语言环境以十万为单位格式化数字(它可以根据任何国家/地区的语言环境格式化数字或货币)。NumberFormat.decimalPattern([String locale]).
import 'package:intl/intl.dart';
void main() {
NumberFormat numberFormat = NumberFormat.decimalPattern('hi');
print(numberFormat.format(16987));
print(numberFormat.format(13876));
print(numberFormat.format(456786));
}
Run Code Online (Sandbox Code Playgroud)
输出
16,987
13,876
4,56,786
Run Code Online (Sandbox Code Playgroud)
小智 6
在执行此操作之前,您不需要使用 NumberFormat 包。这应该有帮助,用任何数字进行测试。
String formatAmount(){
String price = "1000000000";
String priceInText = "";
int counter = 0;
for(int i = (price.length - 1); i >= 0; i--){
counter++;
String str = price[i];
if((counter % 3) != 0 && i !=0){
priceInText = "$str$priceInText";
}else if(i == 0 ){
priceInText = "$str$priceInText";
}else{
priceInText = ",$str$priceInText";
}
}
return priceInText.trim();
}
Run Code Online (Sandbox Code Playgroud)
然后你可以通过打印来使用:
print(formatAmount());
Run Code Online (Sandbox Code Playgroud)
输出:
1,000,000,000
Run Code Online (Sandbox Code Playgroud)
如果您想要带小数的逗号分隔值,请使用decimalPatternDigits初始值设定项并通过参数控制小数位数decimalDigits。
将参数值设置decimalDigits为0将导致没有小数。
带小数
import 'package:intl/intl.dart';
NumberFormat formatter = NumberFormat.decimalPatternDigits(
locale: 'en_us',
decimalDigits: 2,
);
print(formatter.format(17459));
print(formatter.format(1000000));
print(formatter.format(100100.05));
print(formatter.format(100100.016));
Run Code Online (Sandbox Code Playgroud)
输出
17,459.00
1,000,000.00
100,100.05
100,100.02
Run Code Online (Sandbox Code Playgroud)
不带小数
import 'package:intl/intl.dart';
NumberFormat formatter = NumberFormat.decimalPatternDigits(
locale: 'en_us',
decimalDigits: 0,
);
print(formatter.format(100100.05));
print(formatter.format(100100.999));
Run Code Online (Sandbox Code Playgroud)
输出
100,100
100,101
Run Code Online (Sandbox Code Playgroud)