//数字度转字符串度分秒
eg:34.0123°
首先是34°
然后小数部分60=0.012360=0.738取整数部分作为分即0′
再取其小数部分0.73860=44.28得″
因此转换为度分秒即为34°0’44.28″
public string ConvertDigitalToDegrees(double digitalDegree)
{
const double num = 60;
int dms_d = (int)digitalDegree;
double temp = (digitalDegree - dms_d) num;
int dms_m = (int)temp;
double dms_s = (temp - dms_m) * num;
dms_s = Math.Round(dms_s, 2);
string degree = “” + dms_d + “°” + dms_m + “‘“ + dms_s + “‘’”;
return degree;
}
//度分秒转换为毫秒
度3600+分60+秒成为秒,
秒1000得毫秒
public void ConvertDigitalToSecond(string digitalDegree, out string s, out string ss)
{
double dDegree = Convert.ToDouble(digitalDegree);
const double num = 60;
int dms_d = (int)dDegree;
double temp = (dDegree - dms_d) num;
int dms_m = (int)temp;
double dms_s = (temp - dms_m) num;
dms_s = Math.Round(dms_s, 3);
double second = dms_d num num + dms_m num + dms_s;
s = second.ToString();
ss = (second * 1000.0).ToString();
}
//度分秒转数字度
public double ConvertDegreesToDigital(string degrees)
{
const double num = 60;
double digitalDegree = 0.0;
int d = degrees.IndexOf(‘°’);
if (d < 0)
{
return digitalDegree;
}
string degree = degrees.Substring(0, d);
digitalDegree += Convert.ToDouble(degree);
int m = degrees.IndexOf(‘′’); //分的符号对应的 Unicode 代码为:2032[1](六十进制),显示为′。
if (m < 0)
{
return digitalDegree;
}
string minute = degrees.Substring(d + 1, m - d - 1);
digitalDegree += ((Convert.ToDouble(minute)) / num);
int s = degrees.IndexOf(‘″’); //秒的符号对应的 Unicode 代码为:2033[1](六十进制),显示为″。
if (s < 0)
{
return digitalDegree;
}
string second = degrees.Substring(m + 1, s - m - 1);
digitalDegree += (Convert.ToDouble(second) / (num * num));
return digitalDegree;
}