首页 > 解决方案 > 地理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

解决方案


Java中没有内置Decimal类型。

  • 因此,要么它是在您的代码中的某个地方定义的 - 然后尝试使用Ctrl-Shift-O.
  • 或者它来自某个图书馆。组织进口也会在这里有所帮助。

或者代码是简单而明显无效的。这将是我的赌注,因为我无法想象latitude < 0为某些第三方Decimal类型工作。

解决方案很简单:只需使用即可java.math.BigDecimal。你不能这样做myBigDecimal < 0,但有足够的 API 来处理你需要的任何数学。


推荐阅读