Метод с использованием математики дает другой ответ, чем калькулятор - PullRequest
1 голос
/ 13 октября 2019

Я новичок в Java, поэтому, пожалуйста, потерпите меня. Я пытаюсь получить процент выигрышей от общего количества игр, и кое-что, что я делаю, уже далеко. Мой метод получения процента ниже:

public double winPercentage(int wins, int total)
{
    return (wins % total) * 1.00;
}

Если я выигрываю 52 игры из 254, мой ответ достигает 52,0, при использовании моего калькулятора тот же ответ составляет 20,47 при условии выигрышей / всего * 100. Если я переключаю модуль на /, я постоянно получаю 0.0

. Я пробовал различные варианты десятичных разрядов и порядок операций. Я не могу найти калькулятор и метод, чтобы соответствовать.

Ответы [ 2 ]

5 голосов
/ 13 октября 2019

Знак процента в wins % total не имеет отношения к вычислению процента.

Чтобы вычислить процент в Java, вы можете написать

return 100.0 * wins / total;

Здесь 100.0 служит двойному назначению:

  • это изменяет результат в процентные пункты;
  • превращает последующее деление в деление с плавающей точкой (без которого это целое деление, всегдавозвращает ноль, когда wins < total).
1 голос
/ 13 октября 2019
  1. Java использует% как оператор по модулю, поэтому он всегда будет возвращать остаток в результате, а не в процентах.
  2. Если мы разделим целое число на целое число, то результат не будет точным, как требуется для функции процента,Например, если мы попытаемся разделить 52 на 254, результатом будет 0 для целого числа, а не 0,2047, поскольку целое число может содержать только полные числа. Таким образом, чтобы получить процент, вы можете использовать double / float в качестве типа данных параметра, как показано ниже, вместо целого числа.
public double winPercentage(double wins, double total) {
     return wins / total * 100;
  }
...