2012-01-16 95 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 
相關問題