Zaokrąglanie liczb przekraczających zakres do X miejsc po przecinku i ucinanie ich.

0

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ę.

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/6862684/converting-from-decimal-degrees-to-degrees-minutes-seconds-tenths

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);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1