有一些现有它用于格式数值后续形式的代码:的Java的String.format与货币符号
String.format(pattern, value)
注意,我不能改变代码本身 - 我只能更改提供给代码的格式模式。
什么是输出默认语言环境的货币符号的格式模式?从本质上讲,我想实现以下的输出:
String.format("...", 123) => $ 123
有一些现有它用于格式数值后续形式的代码:的Java的String.format与货币符号
String.format(pattern, value)
注意,我不能改变代码本身 - 我只能更改提供给代码的格式模式。
什么是输出默认语言环境的货币符号的格式模式?从本质上讲,我想实现以下的输出:
String.format("...", 123) => $ 123
由于您提出的限制,我认为这是不可能实现的。 要获得当前的区域设置的货币符号,您需要最少的代码。
如果您完全没有办法向程序添加代码,则最好使用“currency”(¤)的已建立符号。它是为了这个确切的目的而建立的,以表示没有任何更具体的符号的货币。
如果您不能更改给定的代码,但将代码作为整体添加到项目中,则可以使用该代码找出最适合使用的符号。一旦拥有了它,就可以使用它为现有代码创建格式化模式。
如果您可以找出原始程序将在下一个运行的语言环境中,则可以编写一个使用该设置填充配置的助手程序。
你可以尝试以下方法:
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
}
此打印:
123 €
123.10 €
String formatstring=String.format("$%s", 123);
System.out.println(formatstring);
如果我的JVM的本地语言为法语,似乎不打印欧元符号;仍然显示$ –
ohhh对不起。我以为你想打印$。 –
无需推倒重来。 DecimalFormat
配备了货币支持:
String output = DecimalFormat.getCurrencyInstance().format(123.45);
这也可任选地使在Locale
配备了完整的语言环境支持:
String output = DecimalFormat.getCurrencyInstance(Locale.GERMANY).format(123.45);
这是一个测试:
System.out.println(DecimalFormat.getCurrencyInstance().format(123.45));
System.out.println(DecimalFormat.getCurrencyInstance(Locale.GERMANY).format(123.45)) ;
输出:
$123.45
123,45 €
如果没有默认的Locale可用,我们可以使用unicode和decimal格式设置货币符号。如下面的代码:
例如,设置印度货币符号并设置其值。这将在用户无需更改设置的情况下运行。
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));
输出:
₹12,324.13
也许值得看一看[NumberFormat的(http://docs.oracle.com/javase/6/docs/api/java/text/NumberFormat.html#format (长))。 –
编辑提到我不能更改代码 –
@MarcPolizzi:你不能改变代码,但你*可以*改变格式字符串(大概在别处指定) - 是吗? –