2017-08-16 10 views
0

を使用して何かにダブルをフォーマットするにはどうすればよい:私は、変数持ち、コンマとユーロ記号

private double classicpreis = 2.5; 

を、私はこのような何かにそれを変更したい:私はカンマを考え

private double classicpreis = 2,5 €; 

二重でも可能だが、うまくいかなかった。だから私はそれをどのように達成できますか?

編集

私はこのような何かに出力することを望む:あなたは文字列定数として、コードの数字を書き、あなたのロケールを使用して、二重にそれを解析することができます

2,50 € 
+0

小数点とカンマはプレゼンテーションの問題です。コードは依然として小数点を使用する必要があります。しかし、値を出力する場合は、必要に応じてフォーマットすることができます。 – Jason

+0

コード自体で、または文字列として?コード自体については、値の一部としてコンマや通貨記号を使用することはできません。 – Carcigenicate

+0

あなたはコンマが必要な場合は、代わりに 'String'を使用してください –

答えて

0

最も簡単な解決策は、 NumberFormat.getCurrencyInstance(Locale) またはNumberFormat.getCurrenyInstance()を使用してすべてのフォーマットを実行することです。

は、あなたが例えば

Locale locale = Locale.GERMANY; 
NumberFormat numberFormat = NumberFormat.getCurrencyInstance(locale); 
String s = numberFormat.format(preis); 

を行うことができますし、あなたが"2,50 €"を取得するあなたは

double preis = 2.5; 

があるとします。あなたが使用 Localeに応じたフォーマットは、すべての詳細については、世話をすること

ノート(前または番号の後に小数点 コンマやポイント、選択した通貨記号、通貨の使用、間のスペースの 数)。 例:Locale.GERMANYについてあなたが"2,50 €"を取得し、Locale.USため あなたが"$2.50"を取得し、Locale,UKのためにあなたが"£2.50"を取得します。

+0

大変ありがとうございました。私のコードは正常に動作しています。 – Jennifer96

0

選択。しかし、ユーロ記号は私にはdoubleを使ってはいけないと信じていますが、むしろ10進数のクラスです。

0

言語自体を変更することはできません。コード内では、doubleの値を宣言する場合は常に小数点を書く必要があります。


しかし、アプリケーションのユーザが見ることを得る表示装置で、例えば、代わりに点のカンマで値を出力する複数の方法があります。

ユーザーはドイツにある場合、それはカンマを印刷する必要があります例えばそこであなたは常に、現在のロケール形式を使用する必要があります。 Javaライブラリには、How to format double value for a given locale and number of decimal places?official tutorial by Oracleのような自動化されたプロセスがあります。

Locale currentLocale = ... 
NumberFormat numberFormatter = NumberFormat.getNumberInstance(currentLocale); 

double value = 2.5; 

String formattedValue = numberFormatter.format(value); 
System.out.println("Formatted value is: " + value); 

出力は、今あなたがcurrentLocaleに設定されたものに応じて変更します。使用する

クラスはNumberFormatまたはDecimalFormatあり、ここで小さな例です。現在のロケールはLocale.getDefault()で得ることができますが、例えばで定義されている定数をLocale.GERMANYのように定義して、異なる地域のロケールを直接選択することもできます。


小数点のパターンを適用して、1.004,34のような数字を作成することもできます。パターンは、したがって、#,##0.00であり、この方法を使用することができます。

フォーマットパターンで
String pattern = "#,##0.00"; 
DecimalFormat decimalFormatter = (DecimalFormat) numberFormatter; // The one from above 

decimalFormatter.applyPattern(pattern); 

String formattedValue = decimalFormatter.format(value); 

あなたはまた、単にパターンに追加し、シンボルを追加することができます。

+1

大変ありがとうございました。私のコードは正常に動作しています。 – Jennifer96

0

実行中です。私の作業コードは次のようになります:

public class Bestellterminal { 

private double Preis = 0; 
private double classicpreis = 2.50; 

classic.addActionListener(new ActionListener() { 

     public void actionPerformed(ActionEvent e) { 

      Preis = Preis + classicpreis;  

      Locale currentlocale = Locale.GERMANY; 
      NumberFormat numberFormatter = 
      NumberFormat.getCurrencyInstance(currentlocale); 
      String classicpreisx = numberFormatter.format(classicpreis); 
      String preisx = numberFormatter.format(Preis); 



      JLabel.setText(String.valueOf("Summe: " + preisx)); 

      }}); 

} 

お世話になりました。

関連する問題