Dezimaltrennzeichen "." wird bei Übergabe als ActionParameter ignoriert

Chocobanana

Erfahrenes Mitglied
Hi!

Ich ärger mich gerade mit einem klassischen Anfängerproblem herum - sorry für die blöde Frage:

Über die URL übergebe ich einen Parameter wie z.B. lat=123.456! Dabei ist "." das Dezimaltrennzeichen.

Den Wert würde ich dann gerne einer Variable (Double) zuweisen.

Funktioniert auch so, aber das Dezimaltrennzeichen wird ignoriert und die Variable erhält den Wert 123456.

Das mit den Nachkommastellen klappt nur wenn ich die Variable als "lat=123,456" übergebe.

Wie kann ich denn Java erklären dass mein Punkt als Dezimaltrennzeichen interpretiert wird?

["Architektur": Openlayers liefert die Variablen, per AJAX und Struts Action wird die Variable übergeben und dann in einer Java Klasse verarbeitet]
 
Nicht schön, aber schnell und einfach wäre es der String.replace() Methode alle Punkte durch ein Komma zu tauschen und dann den Wert nach Dobule oder BigDezimal oder dergleichen zu parsen.

Eleganter wäre der Weg (wie ich zumindest finde) über DecimalFormat oder NumberFormat
Hier mal ein Beispiel mit Numberformat:

Java:
import java.text.NumberFormat;
import java.util.Locale;

public class DecimalFormatExample {
	public static void main(String[] args) {
		//String eingabe = "123,456";
		String eingabe = "123.456";

		//NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMANY);
		NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
		try {
			Number n = nf.parse(eingabe);
			Double d = n.doubleValue();
			System.out.println(d);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
 
Zuletzt bearbeitet:
Zurück