如何在Java中将double加倍到两位小数?

时间:2012-03-27 12:31:27

标签: android format decimal coordinates rounding

我目前正尝试从某个位置检索纬度和经度值。当我使用以下代码将位置转换为整数值时:

    LocationManager locMan;
    Location location;
    String towers;
    private static double lat;
    private static double lon;

    locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);          
    Criteria crit = new Criteria();

    towers = locMan.getBestProvider(crit, false);
    location = locMan.getLastKnownLocation(towers);                 

        if (location != null)
        {                   

            lat = (int) (location.getLatitude() * 1E6);
            lon = (int) (location.getLongitude() * 1E6);
            GeoPoint ourLocation = new GeoPoint(lati, longi);
            OverlayItem overlayItem = new OverlayItem(ourLocation, "1st String", "2nd String");
            CustomPinpoint custom = new CustomPinpoint(d, MainMap.this);
            custom.insertPinpoint(overlayItem);
            overlayList.add(custom);
            overlayList.clear();    

            lat = (double) lat;             
            lon = (double) lon; 

            System.out.println("Lat is  " + lat);
            System.out.println("Longi is  " + lon);
        }
        else
        {
            System.out.println("Location is null! " + towers);
            Toast.makeText(MainMap.this, "Couldn't get provider", Toast.LENGTH_SHORT).show();                   
        }

以0.000000

的格式返回
lat is 5.494394
long is -7.724457

我怎么能以格式00.000000

取回它

我尝试过DecimalFormat,Math.Round以及我在Stack Overflow上找到的各种其他解决方案,但仍然得到相同的结果。请帮忙!

4 个答案:

答案 0 :(得分:4)

你试过这个:

DecimalFormat sf = new DecimalFormat("00.000000");
String s = sf.format(5.494394);
System.out.println(s); //prints 05.494394

编辑

根据您的新问题,为什么不这样做:

double latitude = location.getLatitude();
double longitude = location.getLongitude();
GeoPoint ourLocation = new GeoPoint((int) (latitude * 1E6), (int) (longitude * 1E6));
//....
System.out.println("Lat is  " + latitude);
System.out.println("Longi is  " + longitude);

答案 1 :(得分:2)

转换为String,添加前导零。 StringFormatter可能有所帮助。 整数永远不会有前导零。

答案 2 :(得分:1)

你在“真实数据”和“表示”之间混淆了

5.494394是“真实数据”,这是一个低于10的整数,当你直接显示它时,没有十年是合乎逻辑的。

我想要每次显示十年,也等于0,你必须测试你的整数是否低于10不是。 通过原子测试,可以在java中以这种方式完成:

(lat < 10) ? "0"+lat : lat;

使用此功能,您始终是“真实数据”之前显示的十年。

答案 3 :(得分:1)

public String formatFigureToTwoPlaces(double value) {
    DecimalFormat myFormatter = new DecimalFormat("00.00");
    return myFormatter.format(value);
}