我正在尝试接收一个int,它总是一个带有2位小数的数字。 例如:
所以我试图避免使用String运算符并将DecimalFormat与模式0,00和德语区域设置一起使用。
但是当我得到10004时,我获得的输出是1.00.04
这是我的代码:
public static String formatDecimal(double number) {
//String pattern = "#,00";
String pattern = "0,00";
DecimalFormat fN = (DecimalFormat) NumberFormat.getNumberInstance(Locale.GERMAN);
fN.applyPattern(pattern);
return fN.format(number)
}
答案 0 :(得分:2)
尝试:
public static String formatDecimal(double number) {
DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(Locale.GERMANY);
dfs.setGroupingSeparator('.');
return new DecimalFormat("0,00", dfs).format(number / 100);
}
formatDecimal(1000); // 10,00
formatDecimal(100); // 1,00
formatDecimal(0); // 0,00
formatDecimal(100099); // 1.000,99
答案 1 :(得分:2)
为什么要使用自己的模式? Java默认实现在大多数语言环境中具有相当好的模式。至少通过查看Oracle's docs,它看起来应该做你需要做的事情:
Locale Formatted Numbers
German (Germany) 123.456,789
German (Switzerland) 123'456.789
English (United States) 123,456.789
所以你需要做的事情(除了将数字除以100之外)将最小分数设置为“2”:
public static String formatDecimal(double number) {
NumberFormat german = NumberFormat.getNumberInstance(Locale.GERMAN);
german.setMinimumFractionDigits(2);
return german.format(number / 100);
}
已编辑:按预期打印数字:
0,00
0,01
0,02
0,09
0,10
0,11
0,99
1,00
1,01
9,99
10,00
10,01
99,99
100,00
100,01
999,99
1.000,00
1.000,01
9.999,99
10.000,00
10.000,01
99.999,99
100.000,00
100.000,01
999.999,99
1.000.000,00
1.000.000,01