oficial:
public float DuFenMiaoToDu(float d, float f, float m)
{
//度分秒 -> 度
f = f + m / 60;
d = d + f / 60;
return d;
}
public float DuToDuFen_fen(float d)
{
//度 -> 度分
float f = (d - Mathf.Floor(d)) * 60;
return f;
}
public float FenToFenMiao_miao(float f)
{
//分 -> 分秒
float m = (f - Mathf.Floor(f)) * 60;
return m;
}
Uso actual
float El número de dígitos significativos es 6
doble El número de dígitos significativos es 16 Los dígitos de
latitud y longitud son 8 ~ 9
Por lo tanto, necesita usar Double para la entrada de datos, pero es más conveniente usar float (Mathf).
Por lo tanto, se decide utilizar generalmente el grado, minuto y segundo para calcular, de la siguiente manera:
public float DuToFen(double d, double line) //line指经纬线
{
float f = (float)(60 * (d - line));
return f;
}
eg1. d = 116.307629, línea = 116
f = 60 * 0.307629 = 18.4577
eg2. d = 113.947906, línea = 114
f = 60 * -0.052094 = -3.1256
Actualizar:
public string GetStringLongitude(double value)
{
float du = Mathf.Floor((float)value);
double f = 60 * (value - du);
float fen = Mathf.Floor((float)f);
double m = 60 * (f - fen);
float miao = Mathf.Floor((float)m);
string str = du + "°" + fen + "' " + miao + "\" E";
return str;
}
public string GetStringLatitude(double value)
{
float du = Mathf.Floor((float)value);
double f = 60 * (value - du);
float fen = Mathf.Floor((float)f);
double m = 60 * (f - fen);
float miao = Mathf.Floor((float)m);
string str = du + "°" + fen + "' " + miao + "\" N";
return str;
}