将十进制坐标转换为度、分和;秒乘c#
有没有人知道在不使用其他库的情况下转换此文件的简单短代码?如下所示:将十进制坐标转换为度、分和;秒乘c#,c#,coordinates,C#,Coordinates,有没有人知道在不使用其他库的情况下转换此文件的简单短代码?如下所示: double coord = 59.345235; int sec = (int)Math.Round(coord * 3600); int deg = sec / 3600; sec = Math.Abs(sec % 3600); int min = sec / 60; sec %= 60; 编辑:添加了一个Abs调用,使其也适用于负角度。如下: double coord = 59.345235; int sec = (i
double coord = 59.345235;
int sec = (int)Math.Round(coord * 3600);
int deg = sec / 3600;
sec = Math.Abs(sec % 3600);
int min = sec / 60;
sec %= 60;
编辑:添加了一个Abs调用,使其也适用于负角度。如下:
double coord = 59.345235;
int sec = (int)Math.Round(coord * 3600);
int deg = sec / 3600;
sec = Math.Abs(sec % 3600);
int min = sec / 60;
sec %= 60;
编辑:添加了一个Abs调用,以便它也适用于负角度。我从您的问题推断,您希望将笛卡尔坐标转换为极坐标 如果是这种情况,您需要的基本公式是: r=√ (x2+y2) θ=atan(y/x) 其中r是距离,θ是与x=0的角度(关于原点)
这有帮助吗?我从你的问题推断出你想要从笛卡尔坐标转换到极坐标 如果是这种情况,您需要的基本公式是: r=√ (x2+y2) θ=atan(y/x) 其中r是距离,θ是与x=0的角度(关于原点) 这有帮助吗?您可以使用timespan:(很棘手,但它可以工作) 你可以使用timespan:(很棘手,但它可以工作)
我得出了以下结论。它正确地处理负坐标(南纬或西经度),并返回未分为分钟或秒的余数(以度为单位)
public static double ConvertDecimalToDegMinSec(double value, out int deg, out int min, out int sec)
{
deg = (int)value;
value = Math.Abs(value - deg);
min = (int)(value * 60);
value = value - (double)min / 60;
sec = (int)(value * 3600);
value = value - (double)sec / 3600;
return value;
}
我得出了以下结论。它正确地处理负坐标(南纬或西经度),并返回未分为分钟或秒的余数(以度为单位)
public static double ConvertDecimalToDegMinSec(double value, out int deg, out int min, out int sec)
{
deg = (int)value;
value = Math.Abs(value - deg);
min = (int)(value * 60);
value = value - (double)min / 60;
sec = (int)(value * 3600);
value = value - (double)sec / 3600;
return value;
}
询问,但可能会有点混乱,因为它不是一个时间。。。而且它不适用于负角度…@Guffa,我同意!这是一个
wtf代码>确定。。但它说明了(并利用了)两种数据结构之间的并行性,这很奇怪,也很有启发性。(修复了处理负片的功能)询问,但可能会有点混乱,因为它根本不是一个时间。。。而且它不适用于负角度…@Guffa,我同意!这是一个wtf代码>确定。。但它说明了(并利用了)两种数据结构之间的并行性,这很奇怪,也很有启发性。(修正了处理底片的问题)