2016-09-27 254 views

回答

1

这是相当简单:绝对数量的integer part是“度”和的绝对fractional part(即:n-Math.floor(n))将被用于“分钟”和“秒”的值。

当您将“小数部分”乘以60时,则结果值的整数部分为“分钟数”的量。类似地,结果值的小数部分(即:mm - Math.floor(mm))乘以60,将是我已应用自定义舍入例程的“秒”的值(即:myRounding()的函数:)

function toDMS(dec:Number):String { 
    var n:Number = Math.abs(dec); 

    var D:Number = Math.floor(n)*(dec > 0 ? 1 : -1); 
    var mm:Number = (n-Math.floor(n))*60; // The fractional part * 60 
    var M:Number = Math.floor(mm); 
    var S:Number = myRounding((mm - Math.floor(mm))*60, 4); 

    return D+"° "+M+"' "+S+"\""; 
} 

function myRounding(num:Number, decimals:uint):Number { 
    var m:uint = Math.pow(10, decimals); 
    return Math.round(num * m)/m; 
} 

trace(toDMS(-22.14354)); // -22° 8' 36.744" 
trace(toDMS(166.4256)); // 166° 25' 32.16" 
相关问题