更改Dart的NumberFormat中的分组分隔符 [英] Change grouping separator in NumberFormat for Dart
问题描述
我有双重价值
double myNum = 110700.00;
我想使用 NumberFormat 修改其格式
110 700
110 700
如何做到?
推荐答案
您不能在不更改语言环境的情况下执行此操作,因为GROUP_SEP是最终的.
You can't do it without changing locale because GROUP_SEP is final.
但是,如果您不介意更改语言环境,则可以在任何特定实例上执行此操作,例如使用 new NumberFormat('###,000','fr')
,然后选择使用不间断空格
作为GROUP_SEP的任何语言环境(例如法语).当然,然后您将
用作小数点分隔符,但是如果您从未使用过它,那将是无聊的事.碰巧对问题中的示例有用,但不能一概而论.
However, if you don't mind changing locale, which you can do on any particular instance, for example with new NumberFormat('###,000', 'fr')
then pick any locale (e.g. French) which uses non-breaking space
as the GROUP_SEP. Of course, you then end up with ,
as your decimal separator but if you don't ever use it then it's moot. That happens to work for the example in the question, but doesn't generalize.
可以(尽管很脆弱)定义自己的语言.因此,如果您碰巧是说英语的澳大利亚人,更喜欢使用不间断空格
作为组分隔符,请定义自己的语言环境(例如 zz
)
It's possible (though fragile) to define your own language. So if you happen to be an English-speaking Australian who prefers non-breaking space
as your group separator then define your own locale (e.g. zz
)
import 'package:intl/intl.dart';
import 'package:intl/number_symbols_data.dart';
import 'package:intl/number_symbols.dart';
main() {
numberFormatSymbols['zz'] = new NumberSymbols(
NAME: "zz",
DECIMAL_SEP: '.',
GROUP_SEP: '\u00A0',
PERCENT: '%',
ZERO_DIGIT: '0',
PLUS_SIGN: '+',
MINUS_SIGN: '-',
EXP_SYMBOL: 'e',
PERMILL: '\u2030',
INFINITY: '\u221E',
NAN: 'NaN',
DECIMAL_PATTERN: '#,##0.###',
SCIENTIFIC_PATTERN: '#E0',
PERCENT_PATTERN: '#,##0%',
CURRENCY_PATTERN: '\u00A4#,##0.00',
DEF_CURRENCY_CODE: 'AUD',
);
print(new NumberFormat('###,000', 'zz').format(110700));
}
这篇关于更改Dart的NumberFormat中的分组分隔符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!