Java转Double类型经纬度为度分秒格式
时间: 2023-10-23 16:10:58 浏览: 215
可以使用以下代码将Java中的经纬度转换为度分秒格式:
```java
public static String convertToDMS(double coordinate) {
int degrees = (int) coordinate;
int minutes = (int) ((coordinate - degrees) * 60);
double seconds = (coordinate - degrees - minutes / 60.0) * 3600;
return degrees + "°" + minutes + "'" + String.format("%.2f", seconds) + "\"";
}
```
使用示例:
```java
double longitude = 116.4074;
double latitude = 39.9042;
String dmsLongitude = convertToDMS(longitude); // 116°24'26.64"
String dmsLatitude = convertToDMS(latitude); // 39°54'15.12"
```
其中,`convertToDMS`方法将输入的经度或纬度转换为度分秒格式的字符串。首先将度数部分取整作为度数,然后将小数部分乘以60取整作为分钟数,最后将剩余的小数部分乘以3600得到秒数。最后将度、分、秒按照格式拼接成字符串返回。
相关问题
经纬度转度分秒java
以下是一个简单的 Java 代码示例,可以将经纬度从十进制度转换为度分秒:
```java
public static String decimalToDMS(double decimal) {
int degrees = (int) decimal;
decimal -= degrees;
decimal *= 60;
int minutes = (int) decimal;
decimal -= minutes;
decimal *= 60;
double seconds = Math.round(decimal * 100) / 100.0;
return degrees + "°" + minutes + "'" + seconds + "\"";
}
```
您可以将此方法用于经度和纬度,分别调用两次。例如:
```java
double longitude = 123.456789; // 经度
double latitude = 42.987654; // 纬度
String dmsLongitude = decimalToDMS(longitude);
String dmsLatitude = decimalToDMS(latitude);
System.out.println("经度: " + dmsLongitude);
System.out.println("纬度: " + dmsLatitude);
```
输出结果应该是类似这样的:
```
经度: 123°27'24.44"
纬度: 42°59'15.55"
```
经纬度转度分秒java分别截取度分秒的数值
如果您需要分别获取度、分、秒的数值,可以在 `decimalToDMS` 方法中进行修改,将度、分、秒分别作为一个整数或浮点数返回。以下是修改后的示例代码:
```java
public static int[] decimalToDMS(double decimal) {
int degrees = (int) decimal;
decimal -= degrees;
decimal *= 60;
int minutes = (int) decimal;
decimal -= minutes;
decimal *= 60;
double seconds = Math.round(decimal * 100) / 100.0;
// 将度、分、秒分别保存到数组中并返回
int[] dms = new int[3];
dms[0] = degrees;
dms[1] = minutes;
dms[2] = (int) seconds;
return dms;
}
```
您可以将此方法用于经度和纬度,分别调用两次,并将返回的数组保存在变量中。例如:
```java
double longitude = 123.456789; // 经度
double latitude = 42.987654; // 纬度
int[] dmsLongitude = decimalToDMS(longitude);
int[] dmsLatitude = decimalToDMS(latitude);
System.out.println("经度: " + dmsLongitude[0] + "°" + dmsLongitude[1] + "'" + dmsLongitude[2] + "\"");
System.out.println("纬度: " + dmsLatitude[0] + "°" + dmsLatitude[1] + "'" + dmsLatitude[2] + "\"");
```
输出结果应该是类似这样的:
```
经度: 123°27'24"
纬度: 42°59'15"
```
注意,由于秒数是一个浮点数,在转换为整数时会自动向下取整。如果您需要保留更多小数位,可以将数组元素的类型改为 `double`。
阅读全文