如何使用DecimalFormat格式化钱?

时间:2011-12-21 13:41:25

标签: 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);

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

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:4)

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

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

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

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

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

答案 2 :(得分:2)

我认为一个好的选择就是这个方法:

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

  

$ 50

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

  

$ 0,50