2017-04-21 5 views
1

私は通貨formateで値を得ていますが、私は倍精度形式のみが必要です。ここで通貨形式をJavaで倍精度に変換する方法

String amt = txn.getAmount(); 
System.out.println("--amt--"+amt);//output:1010 
double value = Double.parseDouble(amt); 
System.out.println("---value---"+value);//output:1010.0 
String ammount=NumberFormat.getCurrencyInstance().format(value); 
System.out.println("--ammount--"+ammount);//output:Rs.1,010.00 

私は私のコードでRs.1,010.00

1010.00に間違いをしたいですか?

+2

可能な重複[?Javaで小数点以下が2桁の浮動小数点データの出力を表示する方法](http://stackoverflow.com/questions/2538787/how-to-display -out-of-float-data-with-2-decimal-places-java) –

+0

'getAmount'に文字列を返すのはなぜですか? –

+0

@ cricket_007:重複しないでください。 – Durga

答えて

2

私はあなたがは、通貨の詳細を望んでいんと仮定します。その場合は、getCurrencyInstance()の代わりにgetNumberInstance()を使用してください。

用途:

NumberFormat nf = NumberFormat.getNumberInstance(); 
nf.setGroupingUsed(false); 
nf.setMinimumFractionDigits(2); 
String ammount= nf.format(value); 
0

印刷する前に、文字列 "Rs"を置き換えます。 ""と ""、 ""をつけてください。

String replaceString1=amount.replace("Rs.",""); 
String replaceString2=amount.replace(",",""); 

これは、このケースを処理する方法です。 これが役立つことを願っています。

+0

"。" "、"は言語固有のものです。他の言語では、 "。"と "、"が反転することがあります。 – MalaKa

+0

これは、著者が質問をした場合(言語固有)の場合のみです。 –

+0

実際の解決方法は、Currencyインスタンスを全く使用しないことです。 –

0

このクリーンなアプローチを試してください。

 double d = 1010.00; 
     Locale uk = new Locale("en", "GB"); 
     NumberFormat cf = NumberFormat.getCurrencyInstance(uk); 
     String s = cf.format(d); 

     System.out.println(s); 

     Number number = null; 
     try 
     { 
     number = cf.parse(s); 
     } 
     catch (ParseException e) 
     { 
     System.out.print(e); 
     } 
     double dClone = number.doubleValue(); 
+0

これは "きれい"のために非常に冗長です –

+0

ハハ、私はこれが他のハッキーな解決策の点ではもっときれいだと思います。あなたが良いと言うならばこれを修正することを検討してください:D –

+0

私は既に重複 –

関連する問題