如何使用DecimalFormat格式化钱?

Upv*_*ote 13 java android decimalformat

输入看起来像8.7000000,我想格式化它看起来像8.70 EUR.我考虑过使用DecimalFormat课程:

Double number = Double.valueOf(text);

DecimalFormat dec = new DecimalFormat("#.## EUR");
String credits = dec.format(number);

TextView tt = (TextView) findViewById(R.id.creditsView);
tt.setText(credits);
Run Code Online (Sandbox Code Playgroud)

结果是8.7 EUR.如何告诉格式化程序后面有两位数.

Mat*_*ows 28

还想在这里强调Jon Skeet关于使用整数来存储所有货币的观点 - 不想用钱来处理浮点舍入错误.

使用.00而不是.##- 0表示数字,#表示数字(但如果它等于零则隐藏它).

Double number = Double.valueOf(text);

DecimalFormat dec = new DecimalFormat("#.00 EUR");
String credits = dec.format(number);

TextView tt = (TextView) findViewById(R.id.creditsView);
tt.setText(credits);
Run Code Online (Sandbox Code Playgroud)

或使用setMinimumFractionDigits:

Double number = Double.valueOf(text);

DecimalFormat dec = new DecimalFormat("#.## EUR");
dec.setMinimumFractionDigits(2);
String credits = dec.format(number);

TextView tt = (TextView) findViewById(R.id.creditsView);
tt.setText(credits);
Run Code Online (Sandbox Code Playgroud)


小智 5

我在下面的链接中找到了一个不错的解决方案

http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html

简而言之,要将像 92323345465.30 这样的货币表示为 92,323,345,465.30 只需使用 ###,###,###,###.00

也就是说,每当您使用“0”时,“0”将被另一个数字替换,或者如果没有数字替换它,那么它就会出现!但是如果你使用'#' 那么如果没有数字来替换'#',那么那个空间就会是空的。

请记住,您甚至可以在格式之前或什至在格式字符串之后添加自己的符号,如 $ 等