java - 地理Java的小数点到=>度/分/秒
问题描述
我在这里遇到问题,我的 Eclipse 无法识别代码源中的 Decimal 类型!我尝试创建一个工具,允许我将十进制坐标转换为度分秒!如果您对这一点有一些想法,请帮助我!
public class GeolocationDecimalToDegreesConverter{
public static String convert(Decimal latitude, Decimal longitude){
return convertLatitud(latitude) + ' ' + convertLongitude(longitude);
}
public static String convertLatitud(Decimal latitude){
String result = "" ;
if(latitude != null){
String direction = "N";
if(latitude < 0){
direction = "S";
}
result = convert(latitude) + direction;
}
return result;
}
public static String convertLongitude(Decimal longitude){
String result = "";
if(longitude != null){
String direction = "E";
if(longitude < 0){
direction = "W";
}
result = convert(longitude) + direction;
}
return result;
}
private static String convert(Decimal d){
d = d.abs();
//degrees
Integer i = d.intValue();
String s = String.valueOf(i) + '°';
//minutes
d = d - i;
d = d * 60;
i = d.intValue();
s = s + String.valueOf(i) + '\'';
//seconds
d = d - i;
d = d * 60;
i = d.round().intValue();
s = s + String.valueOf(i) + '"';
return s;
}
}
请提供一些解决方案
解决方案
Java中没有内置Decimal
类型。
- 因此,要么它是在您的代码中的某个地方定义的 - 然后尝试使用
Ctrl-Shift-O
. - 或者它来自某个图书馆。组织进口也会在这里有所帮助。
或者代码是简单而明显无效的。这将是我的赌注,因为我无法想象latitude < 0
为某些第三方Decimal
类型工作。
解决方案很简单:只需使用即可java.math.BigDecimal
。你不能这样做myBigDecimal < 0
,但有足够的 API 来处理你需要的任何数学。
推荐阅读
- django - 如何在 django 中创建用于删除记录的删除按钮
- docker - docker-compose 运行时出现问题,找不到 localhost 和服务以错误的顺序启动
- python - 无法使用递归在 python 列表中生成数字组合
- qdbus - 如何在 DBus 中获取 QDBusObjectPath?
- html - HTML 显示一半的 div
- openlayers - 在构造几何时在循环内重绘几何
- c# - 如何在 C#/.NET 中找到文件的真实(区分大小写)名称?
- compiler-errors - 错误:靠近“初始”:语法错误,意外的初始
- python - np.where() 使用字符串和多个条件在 Excel (python) 中创建新列
- mongodb - 在 YCSB 上编写个性化工作负载