Hallo zusammen,
ich habe ein Programmteil, was die Entfernung von Geokoordinaten berechnet. Da Geokoordinaten üblicherweise mit einem Dezimalpunkt dargestellt werden, manche Anwender jedoch versehentlich ein Komma dafür eingeben, wird das Komma intern vor der Berechnung durch einen Punkt ersetzt. Die Berechnung funktioniert auch tadellos, wenn aber in den Regional-Einstellungen des PC was anderes als Deutsch mit den Standard-Einstellungen ausgewählt ist (also ein anderer Dezimaltrenner) kommt verständlicherweise ein falsches Ergebnis raus(um Faktor 10 zu groß, also Komma um 2 Stellen nach rechts verschoben).
Das Ergebnis hat demzufolge auch einen Punkt oder ein Komma als Dezimaltrenner, je nach Landeseinstellung und ist dementsprend korrekt oder zu groß.
Kann mir vielleicht jemand auf die Sprünge helfen, wie unabhängig von den Regionaleinstellungen immer das gleiche Ergebnis rauskommt und trotzdem mit einem Punkt als programminterner Dezimaltrenner gerechnet werden kann?
Die Berechnung selbst sieht übrigens so aus:
Viele Grüße!
ich habe ein Programmteil, was die Entfernung von Geokoordinaten berechnet. Da Geokoordinaten üblicherweise mit einem Dezimalpunkt dargestellt werden, manche Anwender jedoch versehentlich ein Komma dafür eingeben, wird das Komma intern vor der Berechnung durch einen Punkt ersetzt. Die Berechnung funktioniert auch tadellos, wenn aber in den Regional-Einstellungen des PC was anderes als Deutsch mit den Standard-Einstellungen ausgewählt ist (also ein anderer Dezimaltrenner) kommt verständlicherweise ein falsches Ergebnis raus(um Faktor 10 zu groß, also Komma um 2 Stellen nach rechts verschoben).
Das Ergebnis hat demzufolge auch einen Punkt oder ein Komma als Dezimaltrenner, je nach Landeseinstellung und ist dementsprend korrekt oder zu groß.
Kann mir vielleicht jemand auf die Sprünge helfen, wie unabhängig von den Regionaleinstellungen immer das gleiche Ergebnis rauskommt und trotzdem mit einem Punkt als programminterner Dezimaltrenner gerechnet werden kann?
Die Berechnung selbst sieht übrigens so aus:
Code:
LatRAD1a = txtLAT1.Text.Replace(".", ",") LatRAD2a = txtLAT2.Text.Replace(".", ",") LonRAD1a = txtLON1.Text.Replace(".", ",") LonRAD2a = txtLON2.Text.Replace(".", ",") LatRAD1 = ((LatRAD1a / 180) * Math.PI) LonRAD1 = ((LonRAD1a / 180) * Math.PI) LatRAD2 = ((LatRAD2a / 180) * Math.PI) LonRAD2 = ((LonRAD2a / 180) * Math.PI) distance = Math.Acos(Math.Sin(LatRAD1) * Math.Sin(LatRAD2) + Math.Cos(LatRAD1) * Math.Cos(LatRAD2) * Math.Cos(LonRAD1 - LonRAD2)) * 6378.137 tbDistance.Text = distance.ToString
Comment