有其用于格式化数字值后续的形式存在的一些代码 :
String.format( pattern, value )
请注意,我不能改变的代码本身 -我只能改变供给代码格式模式。
什么是格式模式输出默认语言环境的货币符号? 从本质上讲,我想达到以下的输出:
String.format( "...", 123 ) => $ 123
有其用于格式化数字值后续的形式存在的一些代码 :
String.format( pattern, value )
请注意,我不能改变的代码本身 -我只能改变供给代码格式模式。
什么是格式模式输出默认语言环境的货币符号? 从本质上讲,我想达到以下的输出:
String.format( "...", 123 ) => $ 123
有了你已经给定的约束,我认为这是不可能实现的。 要获取当前语言环境的货币符号,你需要最少的代码。
如果你完全没有办法代码添加到程序,你最好使用既定的符号“ 货币 ”(¤)。 它建立了这一确切目的,以象征货币不存在任何更多的特定符号。
如果你不能改变给定的代码,但在项目中添加代码,作为一个整体,你可以用它来找出最适合用来象征。 一旦你拥有它,你可以用它来创建一个模式对现有代码用于格式化。
如果你能找出哪些区域原有的程序将运行在明年,你可以写一个使用该设置填写您的配置辅助程序。
无需推倒重来。 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 €
你可以尝试以下方法:
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 €
如果没有缺省地方可用,我们可以使用Unicode和十进制格式设置的货币符号去。 如下面的代码:
对于例如,设置了印度货币符号和格式化值。 这将工作,而不在设置用户进行更改。
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
String formatstring=String.format("$%s", 123);
System.out.println(formatstring);