我在十六進制緯度和經度值:將十六進制轉換爲十進制(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'這樣的格式。 –