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

2015-01-09 23:42
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ę.

Pozostało 580 znaków

2015-01-09 23:45
1

http://stackoverflow.com/ques[...]-a-java-rounding-double-issue Użyj BigDecimal.

No chyba nie. - some_ONE 2015-01-09 23:48

Pozostało 580 znaków

2015-01-09 23:51
2

Ale ta twoja liczba, nie ma nic po przecinku więc co chcesz zaokrąglić?

Dobre pytanie. - Algeroth 2015-01-09 23:54

Pozostało 580 znaków

2015-01-09 23:52
1

Może spróbuj zaokrąglić samą podstawę potęgi?
W sensie

Math.round(8.9999999999976e26/Math.pow(10, 26))
edytowany 1x, ostatnio: garai, 2015-01-09 23:56

Pozostało 580 znaków

2015-01-09 23:53
1

Chcesz naprawdę zaokrąglić czy tylko wyświetlić zaokrąglone?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-09 23:57
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;
    }

Pozostało 580 znaków

2015-01-10 00:07
1

Może tu jest gotowe rozwiązanie
http://docs.geotools.org/

w życiu nie ma gotowych rozwiązań ;+) - Algeroth 2015-01-10 00:09

Pozostało 580 znaków

2015-01-10 00:11
1

http://stackoverflow.com/ques[...]egrees-minutes-seconds-tenths

http://stackoverflow.com/ques[...]econds-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

logiczne :D - Algeroth 2015-01-10 00:15

Pozostało 580 znaków

2015-01-10 00:38

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

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Dzięki! uhh, mam nadzieję, że niedługo dojdę do takiej wprawy.. :+) - Algeroth 2015-01-10 01:44

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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