2017-04-21 67 views
1

我在貨幣對象中獲得價值,但我只想要雙重格式。如何將貨幣格式轉換爲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.001010.00

在我的代碼的任何錯誤呢?

+2

的可能的複製[?如何顯示浮點數據在Java 2位小數輸出(http://stackoverflow.com/questions/2538787/how-to-display -an-output-of-float-data-with-2-decimal-places-in-java) –

+0

你爲什麼要'getAmount'返回一個字符串? –

+0

@ cricket_007:不重複請仔細觀察, – Durga

回答

2

我假設你做要使用的貨幣細節。在這種情況下,請使用getNumberInstance()而不是getCurrencyInstance()。

用途:

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

非常詳細哈哈,我認爲在其他hacky解決方案方面它更乾淨,如果您有更好的發言權,請考慮修復此問題:D –

+0

我已經標記了重複 –