更改Dart的NumberFormat中的分组分隔符 [英] Change grouping separator in NumberFormat for Dart

查看:104
本文介绍了更改Dart的NumberFormat中的分组分隔符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有双重价值

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆