掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
緯度経度を表示 (ID:147472)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
質問の趣旨と異なるかと思いますが、 生データddmm.mmmmmから処理する関数を作りました。 経度も同じ手順でできるはずです。 魔界の仮面弁士の提示いただいた文字列処理で作り直したら 違うものになってしまいました。 切捨て関数であるToRoundDown関数はネットにあったものを拝借しました。 ' ddmm.mmmmm型の緯度データをdd°mm’ss.sssss’’に変換 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim minusFlag As Boolean Dim dmmLatDbl As Double Dim dmmLatDec As Decimal Dim dmsLatStr As String Dim deg As Decimal Dim min As Decimal Dim sec As Decimal Dim minInt As Integer dmmLatDbl = 4344.77894 If (dmmLatDbl < 0) Then ' 負の場合はフラグで処理 minusFlag = True dmmLatDbl = Math.Abs(dmmLatDbl) Else minusFlag = False End If dmmLatDec = CDec(dmmLatDbl) ' Double型をDecimal型に変換 dmmLatDec = dmmLatDec If (dmmLatDec <> 0.0) Then deg = Math.Truncate(dmmLatDec / 100.0) ' 度をdegに min = ToRoundDown(dmmLatDec - (deg * 100.0), 5) ' 分をminに minInt = Fix(min) ' 分の整数部 sec = (min - Math.Truncate(min)) * 60 ' minの小数点以下をsecに dmsLatStr = Convert.ToString(deg) dmsLatStr = dmsLatStr & "°" dmsLatStr = dmsLatStr & Convert.ToString(minInt) dmsLatStr = dmsLatStr & "’" dmsLatStr = dmsLatStr & Convert.ToString(sec) dmsLatStr = dmsLatStr & "’’" If (minusFlag = False) Then dmsLatStr = "N " & dmsLatStr Else dmsLatStr = "S " & dmsLatStr End If MessageBox.Show(dmsLatStr) Else dmsLatStr = Convert.ToString(0.0) MessageBox.Show(dmsLatStr) End If End Sub ''' ------------------------------------------------------------------------ ''' <summary> ''' 指定した精度の数値に切り捨てします。</summary> ''' <param name="dValue"> ''' 丸め対象の倍精度浮動小数点数。</param> ''' <param name="iDigits"> ''' 戻り値の有効桁数の精度。</param> ''' <returns> ''' iDigits に等しい精度の数値に切り捨てられた数値。</returns> ''' ------------------------------------------------------------------------ Public Shared Function ToRoundDown(ByVal dValue As Double, ByVal iDigits As Integer) As Double Dim dCoef As Double = System.Math.Pow(10, iDigits) If dValue > 0 Then Return System.Math.Floor(dValue * dCoef) / dCoef Else Return System.Math.Ceiling(dValue * dCoef) / dCoef End If End Function
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.