0

10 進数形式を使用して、さまざまなロケールで価格を表示しています。

私の基本形式は次のとおりです。

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 が表示されます。余分な小数点以下の桁数のみを表示したいと思います。 100 分の 1 未満の金額を説明するためだけに 0.0050000 を表示したくありません。

私はヘルプとウェブの多くを経験してきました..それは私にとってちょっと混乱していて、これのために派手なコードの回避策を行おうとしていますが、私が必要とすることを行う簡単な方法があると確信しています. .

次のような数値を表示したいと思います。

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

プログラムが $0.0005 = $0.00 を示している場合、エラーのように見えます。

どんな助けでも大歓迎です..

4

1 に答える 1

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
于 2012-01-16T22:08:41.033 に答える