我目前正尝试从某个位置检索纬度和经度值。当我使用以下代码将位置转换为整数值时:
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上找到的各种其他解决方案,但仍然得到相同的结果。请帮忙!
答案 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);
}