首页 > 解决方案 > Java String.format 两位小数,点作为千位分隔符,逗号作为小数分隔符

问题描述

我需要格式化一个精确到小数位的浮点数,“。” 作为千位分隔符和“,”作为小数分隔符,如下所示:“1.234,56”

我已经尝试过String.format("%,f", myFloat),但它给了我太多这样的小数位:“1.150,000000”。另外,String.format("%,2f", myFloat)也没有用。

标签: javastringformatdecimal

解决方案


您可以尝试使用DecimalFormat类根据需要格式化您的数字:

float number = 12344.12f;

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator('.');
symbols.setDecimalSeparator(','); // to be sure it is ','

DecimalFormat decimalFormat = new DecimalFormat();
decimalFormat.setDecimalFormatSymbols(symbols);
decimalFormat.setMaximumFractionDigits(2);

String format = decimalFormat.format(number);

System.out.println(format);

输出是:

12.344,12

编辑

对于固定小数位试试这个:

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator('.');
symbols.setDecimalSeparator(','); // to be sure it is ','

DecimalFormat decimalFormat = new DecimalFormat("#.###.00");
decimalFormat.setDecimalFormatSymbols(symbols);

String format = decimalFormat.format(number);

推荐阅读