某年月日,羅女士讓善子幫忙把小數形式的經緯度轉換為度分秒形式的經緯度,結果,善子卻犯了嚴重的錯誤!在此向羅女士表示深深的歉意。
工作中,我們有時會遇到需要將小數點形式的經緯度轉換為度分秒形式的經緯度,但稍有不慎,就會出錯。
俗話說:差之毫厘謬以千裡。就經緯度來講,赤道周長為40076千米,在赤道上,差一度相當於差距111.32千米,差一分相當於1.86千米,差一秒相當於差31米。
根據貴州遵義所處的緯度(以28度概算)來算,差一度約為98.3千米,差一分約為1.6千米,差一秒約為27米。
錯誤的結果一
錯誤的公式必然導致錯誤的結果,錯誤公式的起因是由於對經緯度的理解錯誤,所幸的是只是在秒上有一定的差距,實際距離相差亦不是很大,與手機定位造成的偏差差不多(算自己給自己找臺階下麼)。單元格B2的公式為:=INT(A2)&"°"&INT(MOD(A2,1)*60)&"'"&ROUND((60*MOD(A2*100,1)),0)+ROUND(MOD(A2*10000,1),0)&""""。公式都錯了,還有啥好解釋的。
錯誤的結果二
後來,善子根據時間也是60進位來進行修正,結果,只有兩位小數的大部分修正比較不錯,但在涉及接近20分、40分、60分的時候,差錯比較明顯,而且後面小數位數多的時候,差錯也比較多。單元格C2公式為:=INT(A2)&"°"&MINUTE(MOD(A2,1)/24)&"'"&SECOND((MOD(A2,1)-INT(MOD(A2,1)*60)/60)*24)&""""。錯誤公式,亦無需解釋。
正確結果
通過不停的摔跟頭,終於來到了正確的大門前,忍不住先把公式曬出來,單元格D2的公式為:=INT(A2)&"°"&INT(MOD(A2,1)*60)&"'"&ROUND((MOD(A2,1)-INT(MOD(A2,1)*60)/60)*3600,1)&""""。
之所以正確,是因為準確理解了0.1度和0.01度分別對應表示的分數和秒數的關係。0.1度等於1度(60分)的十分之一,也就是6分,而0.01度則等於1度(3600秒)的百分之一,也就是36秒,咳咳,此時該有一個若有所思不斷點頭的表情,0.001度則是3.6秒,0.0001度為0.36秒。
至於中間那些MOD函數和減法,都是將前面已經表示過度和分的值減掉用的,僅此而已。正確結果詳見前兩圖最後一列。
PS:列那麼多行數據,就是為了更好的檢驗和比較。
示例文件下載連結:https://pan.baidu.com/s/1YzuSklkpK9u5rZgHu-MyfA 提取碼: 4ud9
感謝羅女士提供的案例
作者:工欲善,眼鏡男,Excel發燒友。
歷史:弱冠入行伍,不惑解甲歸。
現狀:公司文員。
請轉發到朋友圈,或許你朋友有需要