Currency format in dart

后端 未结 5 1974
一向
一向 2020-12-17 07:52

In C# I can do:

12341.4.ToString(\"##,#0.00\")

and the result is 12,345.40

What\'s the equivalent in dart?

相关标签:
5条回答
  • 2020-12-17 08:12

    I wanted to find the solution also, and found that it is now implemented as per following example.

    import 'package:intl/intl.dart';
    
    final oCcy = new NumberFormat("#,##0.00", "en_US");
    
    void main () {
    
      print("Eg. 1: ${oCcy.format(123456789.75)}");
      print("Eg. 2: ${oCcy.format(.7)}");
      print("Eg. 3: ${oCcy.format(12345678975/100)}");
      print("Eg. 4: ${oCcy.format(int.parse('12345678975')/100)}");
      print("Eg. 5: ${oCcy.format(double.parse('123456789.75'))}");
    
    /* Output :  
    
    Eg. 1: 123,456,789.75
    Eg. 2: 0.70
    Eg. 3: 123,456,789.75
    Eg. 4: 123,456,789.75
    Eg. 5: 123,456,789.75
    
    
     pubspec.yaml :
    
      name: testCcy002
      version: 0.0.1
      author: BOH
      description: Test Currency Format from intl.
      dev_dependencies:
        intl: any
    
       Run pub install to install "intl"  
    */
    }
    
    0 讨论(0)
  • 2020-12-17 08:16

    I'm the author of the dart package money2

    https://pub.dev/packages/money2

    The package supports fixed precision maths, formatting and parsing of money.

    import 'money2.dart';
    
    Currency usdCurrency = Currency.create('USD', 2);
    
    // Create money from an int.
    Money costPrice = Money.fromInt(1000, usdCurrency);
    print(costPrice.toString());
      > $10.00
    
    final taxInclusive = costPrice * 1.1;
    print(taxInclusive.toString())
      > $11.00
    
    print(taxInclusive.format('SCC #.00'));
      > $US 11.00
    
    // Create money from an String using the `Currency` instance.
    Money parsed = usdCurrency.parse(r'$10.00');
    print(parsed.format('SCCC 0.0'));
      > $USD 10.00
    
    // Create money from an int which contains the MajorUnit (e.g dollars)
    Money buyPrice = Money.from(10);
    print(buyPrice.toString());
      > $10.00
    
    // Create money from a double which contains Major and Minor units (e.g. dollars and cents)
    // We don't recommend transporting money as a double as you will get rounding errors.
    Money sellPrice = Money.from(10.50);
    print(sellPrice.toString());
      > $10.50
    
    0 讨论(0)
  • 2020-12-17 08:19

    If you don't wanna print currency symbol:

    import 'package:intl/intl.dart';
    
    var noSimbolInUSFormat = new NumberFormat.currency(locale: "en_US",
          symbol: "");
    
    0 讨论(0)
  • 2020-12-17 08:26

    I use it. it's working for me

    class MoneyFormat {
     String price;
    
     String moneyFormat(String price) {
      if (price.length > 2) {
      var value = price;
      value = value.replaceAll(RegExp(r'\D'), '');
      value = value.replaceAll(RegExp(r'\B(?=(\d{3})+(?!\d))'), ',');
      return value;
      }
     }
    }
    

    and in TextFormField

    onChanged: (text) {
     priceController.text = moneyFormat.moneyFormat(priceController.text);
    }
    
    0 讨论(0)
  • 2020-12-17 08:33

    Here's an example from a flutter implementation:

    import 'package:intl/intl.dart';
    
    final formatCurrency = new NumberFormat.simpleCurrency();
    
    new Expanded(
                child: new Center(
                    child: new Text('${formatCurrency.format(_moneyCounter)}',
                      style: new TextStyle(
                        color: Colors.greenAccent,
                        fontSize: 46.9,
                        fontWeight: FontWeight.w800)))),
    

    Results in $#,###.## or $4,100.00 for example.

    Note that the $ in Text('${... is only to reference the variable _moneyCounter inside the ' ' and has nothing to do with the $ added to the formatted result.

    0 讨论(0)
提交回复
热议问题