我在十六进制纬度和经度值:将十六进制转换为十进制(Lat/Lon)?
0AF6CF83
D89B2933
将它们转换为十进制我......
183947139
-660920013
的问题是,如何使用Java来获得这些小数的格式如下?
18.3947139
-66.0920013
这是我真正转化十六进制到十进制:
public static int hex2Decimal(String s) {
long longValue = Long.parseLong(s, 16);
int intValue = (int)longValue;
return intValue;
}
不要乘以1.0e-7,而应该用1.0e7除。它更精确。 –
@RolandIllig一个'int'值的精度小于10位,所以这个计算结果只能精确到9-10位数。 'double'具有15-17位数的精度,所以'1e-7'的任何不精确都是没有意义的。 – Andreas
接受,但划分的好处是您可以使用Double.toString并获得预期的结果,而不必使用像'%.7f'这样的格式。 –