2012-01-16 94 views
0

我使用小数格式显示不同区域设置的价格。尝试使用带区域设置和可变小数位的DecimalFormat

我的基本格式是:

DecimalFormatSymbols dfs = new DecimalFormatSymbols(); 
String cur_syl = dfs.getCurrencySymbol().toString(); 

DecimalFormat df = new DecimalFormat(cur_syl+"0.00");      
total.setText(df.format(line_total)); 

这对我的作品,并展示了当地正确的货币符号。但是,有时小数部分会超过2个位置(因为测量转换的单位(留下一个真实的小部分)。如果数量真的是0.005,显示屏会显示0.00。我只想显示额外的小数位数如果有价值的话,我真的不想显示0.0050000只是为了说明小于1的数量。

我已经经历了很多的帮助和网络..这有点令人困惑对我来说,我要为这个做周围看中代码的工作,但我敢肯定有一个很好的简单的方法做我需要

我想这样的显示数字:

.05 = $0.05 
.005 = $0.005 
.0005 = $0.0005 

如果程序显示:$ 0.0005 = $ 0.00,那么它看起来像一个错误。

任何帮助将不胜感激..

回答

2

下面是一个使用“#”面具DecimalFormat一些示例代码。如果该位置存在号码,“#”掩码将只显示一个号码。您也可以在小数点的左边使用它,其格式为#,##0.00这样,只有当数字达到数千时,逗号才会显示,但总是在一个位置显示0。

double line_total0 = 0.5; 
double line_total1 = 0.05; 
double line_total2 = 0.005; 
double line_total3 = 0.0000005; 

DecimalFormatSymbols dfs = new DecimalFormatSymbols(); 
String cur_syl = dfs.getCurrencySymbol().toString(); 

DecimalFormat df = new DecimalFormat(cur_syl + "0.00############"); 
System.out.println(df.format(line_total0)); 
System.out.println(df.format(line_total1)); 
System.out.println(df.format(line_total2)); 
System.out.println(df.format(line_total3)); 

输出:

$0.50 
$0.05 
$0.005 
$0.0000005 
相关问题