как исправить погрешность элементарных вычислений
Есть вот такой код
public class Solution {
static void solve(double meal_cost, int tip_percent, int tax_percent) {
double tip = (meal_cost/100)* ((double) tip_percent);
double tax = (((double) tax_percent)/100) * ((double) tip_percent);
double total_cost = (meal_cost + tip + tax);
System.out.println(Math.round(total_cost));
}
private static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
double meal_cost = scanner.nextDouble();
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
int tip_percent = scanner.nextInt();
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
int tax_percent = scanner.nextInt();
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
solve(meal_cost, tip_percent, tax_percent);
scanner.close();
}
}
Передаем аргументы следующие -
15.50 15 10 На выходе получаем правильный ответ. Передаем аргументы 12.00 20 8 и получаем на выходе не правильный ответ (на еденицу больше) с чем это связано и как решить? Я понял, что ошибка где-то при округлении и конвертации. Но после того, как вывел все значения, понял, что ошибка в tax. Как исправить данную ситуацию?
Ответы (1 шт):
Подозреваю, что налог должен считаться точно так же как и чаевые - от цены блюда, т.е.:
double tax = (meal_cost/100) * ((double) tax_percent);
Вообще, у вас много лишних скобок, можно проще это наверняка записать, но главное - формула подсчёта всё-таки.
Но наверняка я не знаю, может быть и такое, что налог считается от цены блюда + чаевые. Уточните в общем формулу.