Proste dzielenei za pomocą printf

Proste dzielenei za pomocą printf
BornStubborn
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 2 lata
  • Postów:60
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.

Kopiuj
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?

AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 2 miesiące
  • Postów:3561
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.


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 3x, ostatnio: AnyKtokolwiek
BornStubborn
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 2 lata
  • Postów:60
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.