Hallo Leute,
ich habe folgendes Problem bei dem ich mir nicht sicher bin ob es überhaupt vernünftig lösbar ist.
Wenn der Benutzer in meiner Anwendung eine Zahl mit Nachkommstellen eingibt, dann wird je nach Sprache entweder '.' oder ',' als Komma verwendet.
Ich verwende auch Tausenderpunkte für die Formatierung der Zahlen.
Das Problem ist, wenn z.B. der deutsche User statt dem ',' fälschlicherweise ein '.' verwendet, dann entfernt das DecimalFormat einfach die Punkte.
Folgendes vereinfachtes Beispiel in dem ich die Sprache fest setze:
Wie man sieht wird so aus einem "20.78" eine "2078.0"
Habt ihr eine Idee wie man solche falschen Eingaben teilweise verhindern kann?
Ich mein, wenn der Benutzer 2000.123 angibt, dann hat er Pech, da hier davon ausgegangen wird das soll ein Tausendertrenner sein. Aber bei kleinen Zahlen wie im obigem Beispiel muss es doch einen Weg geben solche Falscheingaben zu verhindern, ohne, dass ich jetzt selbst einen Stringparser schreiben muss, oder?
ich habe folgendes Problem bei dem ich mir nicht sicher bin ob es überhaupt vernünftig lösbar ist.
Wenn der Benutzer in meiner Anwendung eine Zahl mit Nachkommstellen eingibt, dann wird je nach Sprache entweder '.' oder ',' als Komma verwendet.
Ich verwende auch Tausenderpunkte für die Formatierung der Zahlen.
Das Problem ist, wenn z.B. der deutsche User statt dem ',' fälschlicherweise ein '.' verwendet, dann entfernt das DecimalFormat einfach die Punkte.
Folgendes vereinfachtes Beispiel in dem ich die Sprache fest setze:
Java:
public static void main(String[] args) {
System.out.println("start");
DecimalFormatSymbols symbols = new DecimalFormatSymbols(new Locale("de"));
NumberFormat numFormat = new DecimalFormat("###,###.###", symbols);
try {
Number num = numFormat.parse("20.78");
System.out.println("number=" + num.doubleValue());
// !!!! der output ist: number=2078.0
} catch (ParseException e) {
System.out.println(e);
}
System.out.println("ende");
}
Wie man sieht wird so aus einem "20.78" eine "2078.0"
Habt ihr eine Idee wie man solche falschen Eingaben teilweise verhindern kann?
Ich mein, wenn der Benutzer 2000.123 angibt, dann hat er Pech, da hier davon ausgegangen wird das soll ein Tausendertrenner sein. Aber bei kleinen Zahlen wie im obigem Beispiel muss es doch einen Weg geben solche Falscheingaben zu verhindern, ohne, dass ich jetzt selbst einen Stringparser schreiben muss, oder?