USD Currency Formatting in Java

前端 未结 3 1892
醉梦人生
醉梦人生 2020-12-08 14:26

In Java, how can I efficiently convert floats like 1234.56 and similar BigDecimals into Strings like $1,234.56

I\'m looking for the followi

相关标签:
3条回答
  • 2020-12-08 15:15

    Here is the code according to your input and output::

    The output of the program is $12,345.67 for both BigDecimal and number and it works for float also.

    import java.math.BigDecimal;
    import java.text.DecimalFormat;
    import java.text.DecimalFormatSymbols;
    
    public class test {
        public static void main(String[] args) {
            DecimalFormatSymbols symbols = new DecimalFormatSymbols();
            symbols.setGroupingSeparator(',');
            String pattern = "$#,##0.###";
            DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols);
            BigDecimal bigDecimal = new BigDecimal("12345.67");
    
            String bigDecimalConvertedValue = decimalFormat.format(bigDecimal);
            String convertedValue = decimalFormat.format(12345.67);
    
            System.out.println(bigDecimalConvertedValue);
            System.out.println(convertedValue);
        }
    }
    
    0 讨论(0)
  • 2020-12-08 15:16
    DecimalFormat moneyFormat = new DecimalFormat("$0.00");
    System.out.println(moneyFormat.format(1234.56));
    
    0 讨论(0)
  • 2020-12-08 15:21

    There's a locale-sensitive idiom that works well:

    import java.text.NumberFormat;
    
    // Get a currency formatter for the current locale.
    NumberFormat fmt = NumberFormat.getCurrencyInstance();
    System.out.println(fmt.format(120.00));
    

    If your current locale is in the US, the println will print $120.00

    Another example:

    import java.text.NumberFormat;
    import java.util.Locale;
    
    Locale locale = new Locale("en", "UK");
    NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
    System.out.println(fmt.format(120.00));
    

    This will print: £120.00

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