Возможный дубликат:
Плавающий точечная арифметика не дает точных результатов в Java
Примеры неточности с плавающей запятой
В Java, учитывая следующий код:
double amount = scan.nextDouble();
tenBills = (int)amount / (int)10;
amount = amount - (tenBills * 10);
fiveBills = (int)amount / (int)5;
amount = amount - (fiveBills * 5);
После первого расчета, если ввести, скажем, 16, сумма будет равна 6,66. Но после второго расчета сумма будет 1.6600000000000001. Я не понимаю, почему вычитание int из double может привести к такому результату.