Guten Abend zusammen,
ich habe folgendes Problem mit einer eigentlich einfachen Berechnung. Es geht dabei um die Entfernungsberechnung von Koordinaten. Unter Windows XP 32 Bit wird die korrekte Entfernung ausgerechnet, läuft das Programm unter Windows 7 64 Bit, so wird im Ergebnis das Komma um 3 Stellen nach rechts verschoben, statt 41,4294 Kilometern kommt dann 41429,4 km raus, was natürlich Blödsinn ist. Weiß irgend jemand die Ursache dieses Kommawanderns unter 64 Bit Systemen? Leider habe ich weder ein Win 7 32 Bit noch ein Win XP 64 Bit zur Verfügung um zu testen, obs am Betriebssystem selbst oder an der 32 bzw 64 Bit Version liegt. Hier noch der Code zur eigentlichen Berechnung:
[highlight=vbnet]
Dim LatRAD1 As String
Dim LonRAD1 As String
Dim LatRAD2 As String
Dim LonRAD2 As String
Dim distance As Decimal
Dim LatRAD1a As String
Dim LonRAD1a As String
Dim LatRAD2a As String
Dim LonRAD2a As String
Dim LatRAD1b As String
Dim LonRAD1b As String
Dim LatRAD2b As String
Dim LonRAD2b As String
Dim z As String
Dim x As Double = "6378.137"
LatRAD1a = txtLAT1.Text.Replace(",", ".")
LatRAD2a = txtLAT2.Text.Replace(",", ".")
LonRAD1a = txtLON1.Text.Replace(",", ".")
LonRAD2a = txtLON2.Text.Replace(",", ".")
LatRAD1b = Double.Parse(LatRAD1a, CultureInfo.InvariantCulture)
LonRAD1b = Double.Parse(LonRAD1a, CultureInfo.InvariantCulture)
LatRAD2b = Double.Parse(LatRAD2a, CultureInfo.InvariantCulture)
LonRAD2b = Double.Parse(LonRAD2a, CultureInfo.InvariantCulture)
LatRAD1 = ((LatRAD1b / 180) * Math.PI)
LonRAD1 = ((LonRAD1b / 180) * Math.PI)
LatRAD2 = ((LatRAD2b / 180) * Math.PI)
LonRAD2 = ((LonRAD2b / 180) * Math.PI)
z = Double.Parse(x, CultureInfo.InvariantCulture)
distance = Math.Acos(Math.Sin(LatRAD1) * Math.Sin(LatRAD2) + Math.Cos(LatRAD1) * Math.Cos(LatRAD2) * Math.Cos(LonRAD1 - LonRAD2)) * z
tbDistance.Text = distance.ToString
[/highlight]
Viele Grüße und angenehmen Restabend
ich habe folgendes Problem mit einer eigentlich einfachen Berechnung. Es geht dabei um die Entfernungsberechnung von Koordinaten. Unter Windows XP 32 Bit wird die korrekte Entfernung ausgerechnet, läuft das Programm unter Windows 7 64 Bit, so wird im Ergebnis das Komma um 3 Stellen nach rechts verschoben, statt 41,4294 Kilometern kommt dann 41429,4 km raus, was natürlich Blödsinn ist. Weiß irgend jemand die Ursache dieses Kommawanderns unter 64 Bit Systemen? Leider habe ich weder ein Win 7 32 Bit noch ein Win XP 64 Bit zur Verfügung um zu testen, obs am Betriebssystem selbst oder an der 32 bzw 64 Bit Version liegt. Hier noch der Code zur eigentlichen Berechnung:
[highlight=vbnet]
Dim LatRAD1 As String
Dim LonRAD1 As String
Dim LatRAD2 As String
Dim LonRAD2 As String
Dim distance As Decimal
Dim LatRAD1a As String
Dim LonRAD1a As String
Dim LatRAD2a As String
Dim LonRAD2a As String
Dim LatRAD1b As String
Dim LonRAD1b As String
Dim LatRAD2b As String
Dim LonRAD2b As String
Dim z As String
Dim x As Double = "6378.137"
LatRAD1a = txtLAT1.Text.Replace(",", ".")
LatRAD2a = txtLAT2.Text.Replace(",", ".")
LonRAD1a = txtLON1.Text.Replace(",", ".")
LonRAD2a = txtLON2.Text.Replace(",", ".")
LatRAD1b = Double.Parse(LatRAD1a, CultureInfo.InvariantCulture)
LonRAD1b = Double.Parse(LonRAD1a, CultureInfo.InvariantCulture)
LatRAD2b = Double.Parse(LatRAD2a, CultureInfo.InvariantCulture)
LonRAD2b = Double.Parse(LonRAD2a, CultureInfo.InvariantCulture)
LatRAD1 = ((LatRAD1b / 180) * Math.PI)
LonRAD1 = ((LonRAD1b / 180) * Math.PI)
LatRAD2 = ((LatRAD2b / 180) * Math.PI)
LonRAD2 = ((LonRAD2b / 180) * Math.PI)
z = Double.Parse(x, CultureInfo.InvariantCulture)
distance = Math.Acos(Math.Sin(LatRAD1) * Math.Sin(LatRAD2) + Math.Cos(LatRAD1) * Math.Cos(LatRAD2) * Math.Cos(LonRAD1 - LonRAD2)) * z
tbDistance.Text = distance.ToString
[/highlight]
Viele Grüße und angenehmen Restabend
Comment