我正试图找到一种用点显示货币的方法,例如它应该是
1.234,56 kr.
目前我正在使用
pattern = "#,##0.00 ¤";
new DecimalFormat(pattern);
这不起作用,因为出于某种原因,丹麦克朗被定义为kr,而不是官方认可的kr。
我一直在寻找一种使用Unicode值来转义这些字符的方法,我会将其添加到模式中,但这不起作用。在这里的官方文件中,我也看不到这样做的方法。
TLDR:我想在货币符号后添加句号。所以现在我有这样的kr
,我想要得到的是kr.
。
货币值的输出取决于相应的国家/地区设置。如果您希望像您的情况一样显式地具有小数点,则必须为Numberformat
设置相应的区域设置。例如,用英语表达观点。
例如:
public String FormatWithPoint(double yourValue){
NumberFormat nf = NumberFormat.getNumberInstance(Locale.ENGLISH);
nf.setGroupingUsed(false);
return nf.format(yourValue);
}
编辑:如果您需要更多的控制,您也可以执行以下操作:
public String FormatCurreny(double yourValue){
NumberFormat nf = NumberFormat.getCurrencyInstance();
nf.setGroupingUsed(false);
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setCurrencySymbol("kr.");
dfs.setMonetaryDecimalSeparator('.');
((DecimalFormat) nf).setDecimalFormatSymbols(dfs);
return nf.format(yourValue);
}
如果你只想在货币符号后面加一个点,你可以设置一个自定义的货币符号。在这里,我用欧元(注意,你可以把my_symbol.getCurrencySymbol((+"放在这里,而不是"€"如果你想让它适用于所有货币,而不仅仅是一种货币(:
DecimalFormatSymbols my_symbol = new DecimalFormatSymbols();
my_symbol.setCurrencySymbol("€.");
String pattern = "###,###.###¤";
DecimalFormat decimalFormat1 = new DecimalFormat(pattern, my_symbol);
String format = decimalFormat1.format(987654321.321);
System.out.println(format);
这提供
987.654.321,321€.