Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将十进制坐标转换为度、分和;秒乘c#_C#_Coordinates - Fatal编程技术网

将十进制坐标转换为度、分和;秒乘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确定。。但它说明了(并利用了)两种数据结构之间的并行性,这很奇怪,也很有启发性。(修正了处理底片的问题)