将度转换为小数的公式是:
Decimal= SIGN* Degrees+(Dec. Degrees)/60
如果SIGN = South或West,则SIGN = -1
但是如果我有小数值,如何获得SIGN,Degrees和Dec. Degrees值?
例如,如果小数= 50,小数= 90,则结果为51.5
51.5 = 50 + 90/60
但是尝试计算逆,我得到了公式:
51.5 = X1+ X2/60
无法捕获如何获得2个变量X1和X2?
谢谢!
我假设您想从Decimal Degrees
(DD)转换为Degrees,Minutes,Seconds
(DMS),反之亦然。
// Decimal Degrees to Degrees,Minutes,Seconds
D = floor(DD);
M = floor((DD - D) * 60);
S = round((DD - D - M/60) * 3600);
// Degrees,Minutes,Seconds to Decimal Degrees
DD = D + M/60 + S/3600;
// calculations for your case above
DD = 51.5
D = floor(51.5) => D = 51
M = floor((51.5 - 51) * 60) => M = floor(0.5 * 60) => M = 30
S = round((51.5 - 51 - 30/60) * 3600) => S = 0
// so 51.5 DD = 51° 30' 0'' DMS
如果还要将小数部分保留几秒钟(例如32.15
而不是32
),则只需删除round
调用。
编辑:关于90分钟以上的值实际上是1度30分钟。您可以在this page
上自行测试计算结果