将地理Java的hange十进制改为=> deg / min / sec

时间:2018-07-07 09:01:56

标签: java

我在这里遇到问题,日食无法在我的代码源中识别出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;
    }
}

请一些解决方案

1 个答案:

答案 0 :(得分:1)

Java中没有内置的Decimal类型。

  • 因此可以在您的代码中的某个位置定义它-然后尝试使用Ctrl-Shift-O组织导入。
  • 或者它来自某个图书馆。整理进口商品在这里也会有所帮助。

或者该代码完全无效。我敢打赌,因为我无法想象latitude < 0适用于某些第三方Decimal类型。

解决方案很简单:只需使用java.math.BigDecimal即可。您无法进行myBigDecimal < 0,但有足够的API来处理您需要的任何数学运算。