C语言写一个方法经纬度的度分秒转经纬度小数点
时间: 2024-11-23 10:41:24 浏览: 9
经纬度度分秒格式和度格式转换
在C语言中,转换经纬度的小数点表示通常涉及到将度、分、秒分别乘以相应的分数(60进制),然后相加。以下是一个简单的函数示例,用于将度、分、秒转换为十进制的小数形式:
```c
#include <stdio.h>
#include <math.h>
double dms_to_decimal(double degrees, double minutes, double seconds, double isLatitude) {
// 如果是纬度(南纬为负,北纬为正)
if (isLatitude && degrees > 0) {
degrees = -degrees;
}
// 将度、分、秒转换为小数部分
double decimal_degrees = degrees + minutes / 60.0 + seconds / 3600.0;
return decimal_degrees;
}
int main() {
double latitude_degrees = 40.7128; // 北纬
double latitude_minutes = 45.0;
double latitude_seconds = 30.0;
double longitude_degrees = -74.0060; // 西经
double longitude_minutes = 5.0;
double longitude_seconds = 45.0;
double lat_decimal = dms_to_decimal(latitude_degrees, latitude_minutes, latitude_seconds, 1); // 纬度
double lon_decimal = dms_to_decimal(longitude_degrees, longitude_minutes, longitude_seconds, 0); // 经度
printf("Latitude in decimal format: %.6f\n", lat_decimal);
printf("Longitude in decimal format: %.6f\n", lon_decimal);
return 0;
}
```
这个函数`dms_to_decimal`接受四个参数:度、分钟、秒以及一个指示是纬度还是经度的标志(1代表纬度,0代表经度)。注意纬度正负需要特殊处理。
阅读全文