Różnica w wyniku wynika z pierwszeństwa operatora. W języku Java mnożenie i dzielenie mają równy priorytet, dlatego są oceniane od lewej do prawej.
Więc, pierwszym przykładem jest równoważna
double result = (4/3)*Math.PI*Math.pow(r,3);
Tutaj, 4/3 jest oddziałem dwóch liczb całkowitych, w Javie, w takich przypadkach podział całkowitą odbywa się z wynikami 1. Aby rozwiązać ten problem , trzeba wyraźnie upewnić się, że jeden lub oba operandy jest podwójne:
double result = (4.0/3.0)*Math.PI*Math.pow(r,3);
Twój Drugim przykładem jest jednak równoznaczne z
double result = (Math.PI*Math.pow(r,3)*4)/3;
Tutaj część Math.PI*Math.pow(r,3)*4
jest oceniana na podwójną, a więc nie mamy już podziału na liczby całkowite i otrzymujesz poprawny wynik.
1. formatowanie, 2.dzielenie całkowite (4/3) i 3. kolejność działania w języku Java. Upewnij się, że te 3 rzeczy są sprawdzone. –
Właśnie poprawiłem twój format i większość frazowania. Następnym razem poświęć trochę czasu, aby Twoje pytanie było prezentowalne i czytelne. Używaj interpunkcji, wielkich liter tam, gdzie jest to konieczne i używaj znaczników kodu, aby odpowiednio podświetlić. – brimborium