gpt4 book ai didi

android - java.lang.NumberFormatException : Invalid double 异常

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:07 25 4
gpt4 key购买 nike

我有一种方法可以计算两个纬度之间的差异:

public static double distanceKM(LatLng latLng1, LatLng latLng2) {
int EARTH_RADIUS_KM = 6371;
double lat1Rad = Math.toRadians(latLng1.latitude);
double lat2Rad = Math.toRadians(latLng2.latitude);
double deltaLonRad = Math.toRadians(latLng2.longitude - latLng1.longitude);

double dist_travelled = Math
.acos(Math.sin(lat1Rad) * Math.sin(lat2Rad) + Math.cos(lat1Rad)
* Math.cos(lat2Rad) * Math.cos(deltaLonRad))
* EARTH_RADIUS_KM;

dist_travelled = Double.parseDouble(new DecimalFormat("##.######")
.format(dist_travelled));

return dist_travelled;

}

有时,这个方法抛出异常(我说有时,当我在差异设备上测试时):

java.lang.NumberFormatException: Invalid double: "0,179927" at java.lang.StringToReal.invalidReal(StringToReal.java:63) at java.lang.StringToReal.parseDouble(StringToReal.java:269)

在这种情况下有人可以帮助我吗?谢谢

最佳答案

double 的值取决于设备的语言。例如,对于法语设备,数字 0.179927 变为 0,179927,这将始终抛出 NumberFormatException将其解析为 double 时因为逗号。

您需要更改 comma 中的分隔符到 point .您可以通过设置语言环境或使用 DecimalFormatSymbols 来更改分隔符.

如果您希望分组分隔符是一个点,您可以使用欧洲语言环境:

NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMAN);
DecimalFormat df = (DecimalFormat)nf;

或者您可以使用 DecimalFormatSymbols类更改出现在 format 生成的格式化数字中的符号方法。这些符号包括小数点分隔符、分组分隔符、减号和百分号等:

DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(currentLocale);
otherSymbols.setDecimalSeparator(',');
otherSymbols.setGroupingSeparator('.');
DecimalFormat df = new DecimalFormat(formatString, otherSymbols);

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

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