we are doing a small project in school and we have the following problem. A user inputs an amount of how much a busticket costs, in this case - 2.10. The number of tickets has to also be inputted in this case 1. Afterwards the user inputs how much money he is going to give betwee 50c and 2Euro. I input 2 euro twice. The Change is then calculated. However when inputting these particular numbers instead of getting the anser 1.90, I get 1.85.
import java.util.Scanner;
class Fahrkartenautomat {
    public static void main(String[] args) {
        Scanner tastatur = new Scanner(System.in);
        double amountToPay;
        double depositetTotalAmount;
        double insertionofCoins;
        double Change;
        double stillToPay;
        double ticketPrice;
        int numberOfTickets;
        // Geldbetrag eingeben
        System.out.print("Ticketpreis (Euro): ");
        ticketPrice = tastatur.nextDouble();
        System.out.print("Anzahl der Tickets: ");
        numberOfTickets = tastatur.nextInt();
        amountToPay = ticketPrice * numberOfTickets;
       
        // Geldeinwurf
        depositedTotalAmount = 0.0;
        stillToPay = 0.0;
        while (depositedTotalAmount < amountToPay) {
            stillToPay = amountToPay - depositedTotalAmount;
            System.out.print("Noch zu zahlen: ");
            System.out.printf("%.2f", nochZuZahlen);
            System.out.println(" Euro");
            System.out.print("Eingabe (mind. 5 Cent, höchstens 2 Euro): ");
            insertionOfCoins = tastatur.nextDouble();
            depositedTotalAmount = depositedTotalAmount + insertionOfCoins;
        }
        // Fahrscheinausgabe
        System.out.println("\nFahrschein wird ausgegeben");
        for (int i = 0; i < 8; i++) {
            System.out.print("=");
            try {
                Thread.sleep(200);
            }
            catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("\n\n");
        
        Change = depositedTotalAmount - amountToPay;
        if (Change > 0.0) {
            System.out.print("Der Rückgabebetrag in Höhe von ");
            System.out.printf("%.2f", Change);
            System.out.println(" Euro");
            System.out.println("wird in folgenden Münzen ausgezahlt:");
            while (Change >= 2.00) { // 2-Euro-Münzen
                System.out.println("2 Euro");
                Change = Change - 2.00;
            }
            while (Change >= 1.00) { // 1-Euro-Münzen
                System.out.println("1 Euro");
                Change = Change - 1.00;
            }
            while (rueckgabebetrag >= 0.50) { // 50-Cent-Münzen
                System.out.println("50 Cent");
                Change = Change - 0.50;
            }
            while (Change >= 0.20) { // 20-Cent-Münzen
                System.out.println("20 Cent");
                Change = Change - 0.20;
            }
            while (rueckgabebetrag >= 0.10) { // 10-Cent-Münzen
                System.out.println("10 Cent");
                Change = Change - 0.10;
            }
            while (Change >= 0.05) { // 5-Cent-Münzen
                System.out.println("5 Cent");
                Change = Change - 0.05;
            }
        }
        System.out.println("\nVergessen Sie nicht, den Fahrschein\n" + "vor Fahrtantritt entwerten zu lassen!\n"
                + "Wir wünschen Ihnen eine gute Fahrt.");
        tastatur.close();
    }
}
 
    