(HackerRank, день 2: Операторы) Проблема с конструктором - PullRequest
0 голосов
/ 16 июня 2020

В этом испытании HackerRank мне нужно найти общую стоимость еды , добавив tip_percent , что составляет 20% от food_cost и tax_percent , что составляет 8% от food_cost, а food_cost составляет 12 * 1012 долларов *. Таким образом, результат должен быть круглым числом 15, но мой результат получается как 14 долларов.

Кажется, он работает правильно с настраиваемыми значениями, такими как 12,50 долларов США для food_cost, которые позже суммируются, получается как округленное значение 16 долларов. Что я здесь делаю не так?

static double findMealTotal(double meal_cost, int tip_percent, int tax_percent) {

    tip_percent = (int)(meal_cost * tip_percent)/100;
     tax_percent = (int)(meal_cost * tax_percent)/100;
      return meal_cost + tip_percent + tax_percent;
}

private static final Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
    double meal_cost = scanner.nextDouble();
    int tip_percent = scanner.nextInt();
    int tax_percent = scanner.nextInt();

    //changed solve to mealTotal
    double mealTotal = findMealTotal(meal_cost, tip_percent, tax_percent);

    System.out.println(Math.round(mealTotal));

    scanner.close();
}

1 Ответ

2 голосов
/ 16 июня 2020

Вы используете целые числа. Целые числа округляются, поэтому точность следующего вычисления теряется. Попробуйте использовать двойные значения и в конце привести к int.

    static void Main(string[] args)
    {
        double cost = findMealTotal(12, 20, 8);
        Console.WriteLine(cost.ToString());
    }

    static double findMealTotal(double meal_cost, int tip_percent, int tax_percent)
    {
        double tip = meal_cost * tip_percent / 100;
        double tax = meal_cost * tax_percent / 100;
        return meal_cost + tip + tax;
    }

И не используйте повторно параметры внутри вашей функции. Это плохая практика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...