gpt4 book ai didi

android - 致命异常 : java. lang.NumberFormatException

转载 作者:行者123 更新时间:2023-11-29 01:25:44 25 4
gpt4 key购买 nike

当我从 GPS 获取新的位置坐标时,我会不时遇到此异常,我想对其进行格式化。

这是我的代码:

    DecimalFormat decimalFormat = new DecimalFormat("0.00000");
location.setLatitude(Double.valueOf(decimalFormat.format(location.getLatitude())));
location.setLongitude(Double.valueOf(decimalFormat.format(location.getLongitude())));

为什么会这样?我从该位置返回的纬度和经度都是 double 。我将其格式化,将其转换为所需的格式(小数点后 5 位小数),然后当我尝试进行双重备份时,它崩溃了。为什么会这样?为什么不是每次,只是有时?

崩溃的例子:

 Fatal Exception: java.lang.NumberFormatException
Invalid double: "52,36959"

这是我使用它的地方:

Log.i("","enteredd latitude is:" + location.getLatitude());
try{
DecimalFormat decimalFormat = new DecimalFormat("0.00000");
location.setLatitude(Double.valueOf(decimalFormat.format(location.getLatitude()).replace(",", ".")));
location.setLongitude(Double.valueOf(decimalFormat.format(location.getLongitude()).replace(",", ".")));
}catch (Exception e){
Log.e("","enteredd error deimal formating" + e.getMessage());
}
Log.i("","enteredd latitude is:" + location.getLatitude());

同样的事情还有:

location = LocationServices.FusedLocationApi.getLastLocation(PSLocationCenter.getInstance().mLocationClient);

问题:如果我这样做,它会修复它吗?

 location.setLatitude(Double.valueOf(decimalFormat.format(location.getLatitude()).replace(",", ".")));

最佳答案

您正在将一个 double 值转换为十进制格式,然后将其解析回 double 并使用您从变量 location 中获得的完全相同的值来设置 location 的值。这里面有太多糟糕的逻辑。

location.setLatitude(Double.valueOf(decimalFormat.format(location.getLatitude())));
location.setLongitude(Double.valueOf(decimalFormat.format(location.getLongitude())));

location.getLatitude为纬度,无需设置。

需要设置小数点分隔符:

DecimalFormat decimalFormat = new DecimalFormat("0.00000");
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator('.');
decimalFormat.setDecimalFormatSymbols(dfs);

来自这里:(android) decimalformat, uses comma in place of fullstop while formatting with "#.##"

还有:

获取位置。

double latitude = location.getLatitude();
double longitude = location.getLongitude();

出于您的应用的目的,您不需要更改此设置。

只需将值传递给您需要的服务器:

String lat = decimalFormat(latitude);
String long = decimalFormat(longitude);

关于android - 致命异常 : java. lang.NumberFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34202614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com