13

输入看起来像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);

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

4

3 回答 3

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);

或使用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);
于 2011-12-21T13:42:42.490 回答
5

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

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

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

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

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

于 2013-12-02T11:09:05.630 回答
3

我认为一个不错的选择是这种方法:

使用#,###.00值 0.50 的结果将显示如下:

0.50 美元

但是,如果您使用#,##0.00相同值的结果将是:

0.50 美元

于 2017-10-19T13:18:42.207 回答