Prosty kalkulator

0

Witam, mam taki problem. Otóż zrobiłem prosty kalkulator, wpisujesz dwie liczy- A i B. I wyskakuje następująco - suma, roznica, iloczyn i iloraz.
Problem mam tego typu, że iloraz zawsze mi się zaokrągla. Jest to spowodowane tym, że dziele int/int.
Jak mogę obejść to, żeby wynik ilorazu pokazywał się do 2 miejsca po przecinku?

Załączam ten banalny kod

import java.util.Scanner;

public class kalkulator {

		  public static void main(String[] args){
			  System.out.print("Podaj wartosc A:");
			  int A;
			  Scanner odczyt1 = new Scanner(System.in);
			  A = odczyt1.nextInt();
			  System.out.print("Podaj wartosc B:");
			  int B;
			  Scanner odczyt2 = new Scanner(System.in);
			  B = odczyt2.nextInt();

			  int suma = A+B;
			  int roznica = A-B;
			  int mnozenie = A*B;
			  double dzielenie = A/B;
			  System.out.println("Suma to: "+suma);
			  System.out.println("Roznica to: "+roznica);
			  System.out.println("Iloczyn to: "+mnozenie);
			  System.out.println("Iloraz to: "+dzielenie);
			  
		  }
}
1

Jest to spowodowane tym, że dziele int/int.

Oczywiście! Wynikiem dzielenia int przez int jest zawsze int, którego później w swoim przykładzie konwertujesz na double. Jeżeli występuje reszta z dzielenia to przy dzieleniu całkowitym jest ucinana więc siłą rzeczy taki double będzie bez części ułamkowej.

Popatrz:
https://ideone.com/c8BZfe

2

Użyj odpowiedniego typu danych. Od liczb zmiennoprzecinkowych są typy prymitywne float i double. Musisz natomiast pamiętać, że operacje na nich są niedokładne ze względu na sposób reprezentacji takich liczb w komputerze. Jeśli chcesz dokładnych obliczeń, użyj klasy BigDecimal.

2

Tylko pamiętaj, że operacje na double oraz float nie są dokładne:

import java.util.Scanner;

public class kalkulator {

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int A;
        int B;

        System.out.print("Podaj wartosc A: ");
        A = scanner.nextInt();
        System.out.print("Podaj wartosc B: ");
        B = scanner.nextInt();

        int suma = A + B;
        int roznica = A - B;
        int mnozenie = A * B;
        double dzielenie = (double) A / (double) B;

        System.out.printf("Suma to: %d \n", suma);
        System.out.printf("Roznica to: %d \n", roznica);
        System.out.printf("Iloczyn to: %d \n", mnozenie);
        System.out.printf("Iloraz to: %.2f \n", dzielenie);
    }
    
}
0

dziękuję za pomoc!

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