delphi - 如何在Delphi中将十进制坐标转换为结构化坐标?

标签 delphi

嘿,我正在为学校做一个项目,在该项目中,它要求用户输入十进制坐标并将其转换为结构化格式,即:

17.428333° --> 17° 25' 42"

有人知道如何做到这一点吗?此外,程序应该能够以相反的方式执行此操作;输入结构化坐标17° 25' 42"并转换为十进制坐标17.4283333

我已经掌握了用于转换的基本数学知识。要将结构化坐标转换为十进制坐标,您可以使用以下命令:

17+25/60+42/3600

从十进制转换为结构化,将第一个值17作为度数,然后计算出分钟

17.4285-17=0.4285*60=25.71

去掉小数点或对小数点进行四舍五入以获得分钟,然后计算出秒

25.71-25=0.71*60=42.6

四舍五入小数点或去掉小数秒。

最佳答案

假设您从浮点变量 x 中的坐标开始。像这样计算度、分和秒:

Degrees := Trunc(x);
x := (x - Degrees)*60;
Minutes := Trunc(x);
x := (x - Minutes)*60
Seconds := Round(x);

相反的方向更简单。您需要的表达式是:

Degrees + Minutes/60 + Seconds/3600

关于delphi - 如何在Delphi中将十进制坐标转换为结构化坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23545596/

相关文章:

delphi - Delphi鼠标单击坐标

delphi - Delphi 4的代码分析工具

delphi - 应用程序忙时显示的表单上的按钮没有响应

delphi - 如何在重写的虚函数中调用 `Inherited` 祖先方法?

delphi - 如何使用 VCL 类的接口(interface)?

Delphi XE7/10 Seattle DataSnap OpenSSL 最终确定时访问冲突

delphi - 使用 TryStrToDate 对日期进行特定验证

Delphi 7编辑组件创建

delphi - 不兼容的类型:“TDownloadProgressEvent”和“过程”

delphi - 如何检测特定的 Delphi 版本?