Podstawy Java. Oblicznie wyrażeń błąd.

0

Witam
Na początku dodam że uczę się i rozwiązuję sb różne zadania więc proszę się nie śmiać jeśli coś jest oczywiste.
Mam problem z obliczeniem wyrażenia nwm czy używam odpowiedniego typu danych do otrzymania wyniku. Zastanawiałem się czy bez tylu zmiennych dałoby rade obliczyć to działanie. W załączniku dodałem jak wygląda to wyrażenie jest to proste działanie ale pomimo braku błędu w składni wynik wychodzi zerowy albo NaN. Liczę na wskazówki albo naprowadzenie linkiem bo nie umiałem znaleźć podobnych zadań.

float a;
        float x,y;
        
        x=2*(5/8)-(2/3)*2*(5/14);
        System.out.println("Wynik x: "+x);
        
        y=(3 * (1/12) + 4375/1000)/19*(8/9);
        System.out.println("Wynik y: "+y);
        
        a = x/y;
        System.out.println("Wynik "+a);

0

Dopisz f przy dzielnych (lub dzielnikach) i powinno być OK.

1

Ile to Twoim zdaniem jest 2 i 5/8? :D

0

int/int = int, wiec jeśli chcesz tam mieć double czy floaty to pisz 2.0/5.0 ;)

0

Dziękuje za odpowiedzi.
Naprowadziliście mnie do lepszego rozwiązania które uznaje za słuszne.
Wynikiem tego działania jest:
Wynik x: 2.0
Wynik y: 0.0
Wynik Infinity

float a;
        float x,y;
        
        x= 21/8-(2/3)*(33/14);
        System.out.println("Wynik x: " +x);
        
        y=((37/12) + 4375/1000)/178/9;
        System.out.println("Wynik y: " +y);
        
        a = x/y;
        System.out.println("Wynik "+a);

Przy typie int wynik jest następujący:
Wynik x: 2
Exception in thread "main" java.lang.ArithmeticException: / by zero
Wynik y: 0
Chyba by się zgadzało wywala błąd by nie dzielić przez zero.
;)

1

Jedna z możliwych wersji:

float a, x, y;
 
        x= 21f/8-(2f/3)*(33f/14);
        System.out.println("Wynik x: " +x);
 
        y=((37f/12) + 4.375f) / (179f/9); // ew. (19 + 8f/9)  na końcu
        System.out.println("Wynik y: " +y);
 
        a = x/y;
        System.out.println("Wynik "+a);

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