I am having trouble getting the correct result from the output. Some input give the right and some don't. For example, when I put 499 I get $29.939999999999998 but when I put 500 I get $25.0.
-Enter the number of copies to print:
499
The total cost is: $29.939999999999998
-Enter the number of copies to print:
500
The total cost is: $25.0
This is my code: What am I doing wrong exactly?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter the number of copies to print: ");
double numberOfCopies = in.nextDouble();
double cost;
double subtotal;
double totalAmount;
if(numberOfCopies >= 500) {
cost = 0.05 / numberOfCopies;
subtotal = numberOfCopies * cost;
totalAmount = subtotal * numberOfCopies;
System.out.println("The total cost is: " + " $"+ totalAmount);
} else if (numberOfCopies >= 300 && numberOfCopies <= 499) {
cost = 0.06 / numberOfCopies;
subtotal = numberOfCopies * cost;
totalAmount = subtotal * numberOfCopies;
System.out.println("The total cost is: " + " $" + totalAmount);
} else if (numberOfCopies >= 200 && numberOfCopies <= 299){
cost = 0.07 / numberOfCopies;
subtotal = numberOfCopies * cost;
totalAmount = subtotal * numberOfCopies;
System.out.println("The total cost is: " + " $" + totalAmount);
} else if (numberOfCopies >= 100 && numberOfCopies <= 199) {
cost = 0.08 / numberOfCopies;
subtotal = numberOfCopies * cost;
totalAmount = subtotal * numberOfCopies;
System.out.println("The total cost is: " + " $" + totalAmount);
} else if(numberOfCopies >= 1 && numberOfCopies <= 99) {
cost = 0.10 / numberOfCopies;
subtotal = numberOfCopies * cost;
totalAmount = subtotal * numberOfCopies;
System.out.println("The total cost is: " + " $" + totalAmount);
} else if(numberOfCopies == 0) {
System.out.println("Cannot compute cost of 0 copies");
}
}
}