Proste dzielenei za pomocą printf

0

Witam wszystkich,
mam do Was pytanie. Prawdopodobnie błahe, ale jednak zależy mi na poznaniu odpowiedzi.
Przerabiam zadania ze zbioru Wiesława Rychlickiego i natrafiłem na metodę java printf(). Jest ona dla mnie zrozumiała i moje pytanie nie dotyczy jej. Mianowicie - zbiór posiada odpowiedzi. Po zrobieniu kolejnego z zadań zawędrowałem do nich, aby zweryfikować swój kod i napotkałem tam coś niezrozumiałego.
Zadanie polegało na przedstawieniu ułamka 4/7 z dokładnością 5 miejsc po przecinku za pomocą rzutowania i metody java printf().
W odpowiedziach pokazane było kilka dróg jakimi można uzyskać rozwiązanie.

double x = (double)4/7;

        System.out.printf("4/7 = %.5f\n", x);

        double y = (int)(100000*x+0.5)/100000.0;
        System.out.println("4/7 = "+y);
        y = new Double(100000*x+0.5).intValue()/100000.0;
        System.out.println("4/7 = "+y);
        y = Math.round(100000*x)/100000.0;
        System.out.println("4/7 = "+y);
        System.out.println(String.format("4/7 = %.5f", x));

Moje pytanie brzmi - Po co jest tam to 0.5? Konieczne było mnożenie a następnie dzielenie przez 100000?

0

+0.5 i integer, to taka stara metoda zaokrąglania, gdy nie ma funkcji bezpośrednio do tego.

A dzielenia /10000.0 są głupie, autor nie rozumie jak działa zmienny przecinek i sam ignoruje swoje własne warunki. Przypadkowo można uzyskać zadaną ilosc cyfr, ale nie w pytaniu ogólnym.

Ogólnie prawidłowe są oba z formatem %.5f, bo kształtowanie cyfr zachodzi w samym formatowaniu, a nie wcześniej.

0
AnyKtokolwiek napisał(a):

+0.5 i integer, to taka stara metoda zaokrąglania, gdy nie ma funkcji bezpośrednio do tego.

A dzielenia /10000.0 są głupie, autor nie rozumie jak działa zmienny przecinek i sam ignoruje swoje własne warunki.

Ogromnie Ci dziękuję za wyjaśnienie ;D

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