Java String.format with currency symbol

前端 未结 5 1826
广开言路
广开言路 2021-01-07 23:18

There is some existing code of the follow form which is used for format numerical values:

String.format( pattern, value )

相关标签:
5条回答
  • 2021-01-07 23:45

    No need to reinvent the wheel. DecimalFormat comes with currency support:

    String output = DecimalFormat.getCurrencyInstance().format(123.45);
    

    This also comes with full locale support by optionally passing in a Locale:

    String output = DecimalFormat.getCurrencyInstance(Locale.GERMANY).format( 123.45);
    

    Here's a test:

    System.out.println(DecimalFormat.getCurrencyInstance().format( 123.45) );
    System.out.println(DecimalFormat.getCurrencyInstance(Locale.GERMANY).format( 123.45)) ;
    

    Output:

    $123.45
    123,45 €
    
    0 讨论(0)
  • 2021-01-07 23:47

    If there is no default Locale available, we can go with setting the currency symbol using unicode and decimal formatting. As in the below code:

    For e.g. Setting the Indian currency symbol and formatting the value. This will work without user making changes in the settings.

    Locale locale = new Locale("en","IN");
    DecimalFormat decimalFormat = (DecimalFormat) DecimalFormat.getCurrencyInstance(locale);
    DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(locale);
    dfs.setCurrencySymbol("\u20B9");
    decimalFormat.setDecimalFormatSymbols(dfs);
    System.out.println(decimalFormat.format(12324.13));
    

    Output:

    ₹12,324.13
    
    0 讨论(0)
  • 2021-01-07 23:56
        String formatstring=String.format("$%s", 123);
        System.out.println(formatstring);
    
    0 讨论(0)
  • 2021-01-07 23:57

    With the constraints you have given, I think it is impossible to achieve it. To get to the current Locale's currency symbol, you'll need a minimum of code.

    If you have absolutely no means to add code to the program, you'd best use the established symbol for "currency" (¤). It was established for this exact purpose, to symbolize currency absent any more specific symbol.

    If you can't change the given code, but add code to the project as a whole, you can use that to find out the symbol best used. Once you have it, you can use it to create a pattern for the existing code to use for formatting.

    If you can find out in which Locale the original program will run in next, you could write a assistant program that uses that setting to fill your configuration.

    0 讨论(0)
  • 2021-01-08 00:01

    You can try the following:

    public static void main(String[] args) {
        System.out.println(String.format(" %d \u20AC", 123)); // %d for integer
        System.out.println(String.format(" %.2f \u20AC", 123.10)); // %f for floats
    }
    

    This prints:

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