¿Hay alguna forma de redondear una fracción al siguiente valor fraccionario? [duplicar]

Estoy tratando de crear un Money Maker que, según la entrada del usuario, reúna cuánto necesita de cada centavo.

Monedas de oro = .10, Plata = .05 y Bronce = .01

Probé un par de cosas para depurar mi código y noté que cuando mi fracción restante está cerca de un número, me dará un error, por ejemplo, el usuario ingresa .65 cuando usa .65 % .10 obtengo .049999999 ... por lo tanto, cuando pasando por el valor de la plata, no lo toma en consideración y simplemente lo empuja hacia las monedas de bronce.

System.out.println("What amount would you like to convert");

String stringInput = userInput.readLine();

double amountToConvert = Double.parseDouble(stringInput);

double goldValue = .10;
double goldCoins = Math.floor(amountToConvert / goldValue);
double remainder = amountToConvert % goldValue; // here if a value is super close to, and it will not round it and pass it over to Bronze coins incorrectly.

double silverValue = .05;
remainder = remainder % silverValue;

Ya probé Math.ceil y simplemente redondea la fracción como un todo y eso no es lo que necesito.

Answer

Esta puede no ser su respuesta directa. Pero como alternativa, simplemente puede trabajar con valores enteros entre 1 y 100. Si lo necesita, puede dividir los resultados hasta 100.

Entrada de usuario 65 cables 6 de oro y 1 de plata.

  public static void main(String[] args) {
        System.out.println("What amount would you like to convert");
        String stringInput = "65";

        int amountToConvert = Integer.parseInt(stringInput);


        int goldValue = 10;
        int goldCoins = amountToConvert / goldValue;
        System.out.println(goldCoins);
        int remainder = amountToConvert % goldValue; // here if a value is super close to, and it will not round it and pass it over to Bronze coins incorrectly.

        //System.out.println(remainder);

        int silverValue = 5;
        remainder = remainder / silverValue;
        System.out.println(remainder);
    }