Cześć,
Mógłby ktoś doradzić, jak mam zaokrąglić i obciąć liczbę w double np: 8.9999999999976E26 do jednego miejsca po przecinku (9.0) ?
Próbowałem Math.floor i Math.round, jednak w tym przypadku, nie sprawdzają się.
0
2
Ale ta twoja liczba, nie ma nic po przecinku więc co chcesz zaokrąglić?
1
Może spróbuj zaokrąglić samą podstawę potęgi?
W sensie
Math.round(8.9999999999976e26/Math.pow(10, 26))
1
Chcesz naprawdę zaokrąglić czy tylko wyświetlić zaokrąglone?
0
Bo generalnie próbuję zamieniać kąt np 113.69166666666666 stopni, na wartość- kąt minuta sekunda. Przy takich liczbach pojawiają się błędy, może jakieś sprawniejsze oko wyłapie.
public static String zamienKat(String wejscie) // np wejscie = 113.6916666
{
String wyjscie = "";
String[] podzial = wejscie.split("\\.");
int a = Integer.parseInt(podzial[0]);
double b = Double.parseDouble(podzial[1]) ;
if(b > 9)
{
b = b * (double) 1/100;
}else if(b > 9 && b > 99)
{
b = b * (double) 1/1000;
}else if( b < 10){
b = b * (double) 1/10;
}
b = b * 60;
String temp = b +"";
String[] temp2 = temp.split("\\.");
int bFinal = Integer.parseInt(temp2[0]);
double c = ( Double.parseDouble(temp2[1]) * (double) 1/10) * (double) 60;
wyjscie = a + "^" + bFinal + "'" + c + "\"";
// np 90^0'0.0"
return wyjscie;
}
1
Może tu jest gotowe rozwiązanie
http://docs.geotools.org/
1
http://stackoverflow.com/questions/3249700/convert-degrees-minutes-seconds-to-decimal-coordinates
A co do twojego kodu to czemu nie przekazujesz do funkcji jako double
tylko jako string
, no i if(b > 9 && b > 99)
to jest to samo co if(b > 99)
:P
2
To jakiś obłęd! To samo:
public static String zamienKat(String inp)
{
long h=Math.round(Double.parseDouble(inp)*60*60);
return String.format("%d^%02d'%02d",h/(60*60),h/60%60,h%60);
}