VB2005でで正しい計算結果が出ません。
VB2005でで正しい計算結果が出ません。
こんにちわ。プログラミング初心者です。どうかよろしくお願いします。
緯度経度を変換する計算式をプログラムしたのですが、計算結果が間違って出力されます。
下にプログラムを書くのでどこがおかしいのか、またどうすれば正しい計算結果が求められるのかを教えてください。お願いします。
ちなみにTextBox22には 3601.4589 、 TextBox23には 13942.9930 のような数字が入っています。
Private Sub seriWork()
Dim buffer, buffer2() As String
Dim di1, di2, dk1, dk2 As Double
'~通信に関するところなので中略します~
'~ここから先が計算です~
'Dの緯度百分率変換表示
TextBox22.Text = dN
di1 = Double.Parse(Mid(TextBox22.Text, 1, 2))
di2 = Double.Parse(Mid(TextBox22.Text, 3, 7))
TextBox14.Text = di1 + (di2 / 60).ToString()
'Dの経度百分率変換表示
TextBox23.Text = dE
dk1 = Double.Parse(Mid(TextBox23.Text, 1, 3))
dk2 = Double.Parse(Mid(TextBox23.Text, 4, 7))
TextBox15.Text = dk1 + (dk2 / 60).ToString()
Me.Invoke(New ReDelgate(AddressOf completed))
End If
Loop
Catch ex As Exception
MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
If SerialPort1.IsOpen = True Then SerialPort1.Close()
End Try
End If
この計算の意図は、GPSレシーバーから受信される「3601.4589」のような形の座標形式を
googl mapで表示できる座標に変換するものです。
たとえば、シリアルポートでGPSから受信した緯度が3601.4589 の場合は、「=36 + (1.4589 / 60)」と計算すると 36.024315 のような形になります。
あと、3601.4589 を 36と1.4589で分割するためにMidを使用しています。
/60は公式です。
上記プログラムだと 62.3333333 のような誤解答が出てきます。
どうか教えてください。お願いします。