Formatierung in Euro (0,00€) wiedergeben?
Hallo,
ich habe ein Problem beim wiedergeben der Preise, Ich möchte preise in Euro Angezeigt bekommen also 0,00 und nicht anders. Meine preise werden von z.B 19 Euro im eingegebenen format 19,00 Euro zu 1900 geändert. Kann mir jemand die Lösung zeigen?
Die Methoden:
public static void currencyTXT(TextView text, String nomninal, Context context) {
SettingPreference sp = new SettingPreference(context);
if (nomninal.length() == 1) {
text.setText(nomninal + " " + sp.getSetting()[0]);
} else if (nomninal.length() == 2) {
text.setText(nomninal + " " + sp.getSetting()[0]);
} else {
Double getprice = Double.valueOf(nomninal);
DecimalFormat formatter = new DecimalFormat("#,###,##");
String formattedString = formatter.format(getprice);
text.setText(sp.getSetting()[0] + formattedString.replace(".",","));
}
}
die 2 Methode:
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
editText.removeTextChangedListener(this);
try {
String originalString = s.toString();
Long longval;
if (originalString.contains(".")) {
originalString = originalString.replaceAll("[€.]", "");
}
if (originalString.contains(".")) {
originalString = originalString.replaceAll(".", ",");
}
/*if (originalString.contains(sp.getSetting()[0]+" ")) {
originalString = originalString.replaceAll(sp.getSetting()[0]+" ", "");
}*/
if (originalString.contains(sp.getSetting()[0])) {
originalString = originalString.replaceAll(sp.getSetting()[0], "");
}
if (originalString.contains(sp.getSetting()[0])) {
originalString = originalString.replace(sp.getSetting()[0], "");
}
if (originalString.contains(sp.getSetting()[0])) {
originalString = originalString.replace(sp.getSetting()[0], "");
}
/*if (originalString.contains(" ")) {
originalString = originalString.replaceAll(" ", "");
}*/
longval = Long.parseLong(originalString);
if (longval == 0) {
editText.setText("");
editText.setSelection(editText.getText().length());
} else if (String.valueOf(longval).length() == 1) {
editText.setText(String.valueOf(longval) + " " + sp.getSetting()[0]);
editText.setSelection(editText.getText().length());
} else if (String.valueOf(longval).length() == 2) {
editText.setText(String.valueOf(longval) + " " + sp.getSetting()[0]);
editText.setSelection(editText.getText().length());
} else {
SettingPreference sp = new SettingPreference(context);
DecimalFormat formatter = new DecimalFormat("#,###,##");
String formattedString = formatter.format(longval);
editText.setText(sp.getSetting()[0] + formattedString.replace(".",","));
editText.setSelection(editText.getText().length());
}
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
}
editText.addTextChangedListener(this);
}
1 Antwort
![](https://images.gutefrage.net/media/default/user/6_nmmslarge.png?v=1438863662000)
DecimalFormat formatter = new DecimalFormat("#,###,##");
Ist komplett falsch . Siehe https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html
Java hat eine eingebaute Funktion um eine Dezimalzahl als Euro wiederzugeben.
import java.text.NumberFormat;
import java.util.Currency;
import java.util.Locale;
Currency cr=Currency.getInstance(Locale.GERMANY);
NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.GERMANY);
System.out.println(nf.format(price);