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?