Процент от двух int?
Я хочу получить два ints, один делится на другой, чтобы получить десятичную или процентную долю.
Как я могу получить процент или десятичную цифру из этих двух ints?
(Я не уверен, что это правильно.. Я, вероятно, ушел...)
например:
int correct = 25;
int questionNum = 100;
float percent = correct/questionNum *100;
Вот как я думал, что могу это сделать, но это не сработало... Я хочу сделать десятичную (если она есть) в процентах из 100, например, в этом случае это% 25. любые идеи кто-нибудь?
Вот правильный код (спасибо Salvatore Previti!):
float correct = 25;
float questionNum = 100;
float percent = (correct * 100.0f) / questionNum;
(btw, я делаю проект, используя это для программы проверки викторины, поэтому мне нужен процент или десятичный знак)
Ответы
Ответ 1
Если вы не добавите .0f
, он будет обработан как целое число, а целочисленное деление сильно отличается от деления с плавающей запятой:)
float percent = (n * 100.0f) / v;
Если вам нужно целое число из этого, вы можете, конечно, снова добавить float
или double
в целое число.
int percent = (int)((n * 100.0f) / v);
Если вы знаете, что ваше значение n меньше 21474836 (то есть (2 ^ 31/100)), вы можете делать все с помощью целых операций.
int percent = (n * 100) / v;
Если вы получаете NaN, это потому, что в любом случае вы не можете делить на нуль, конечно... это не имеет смысла.
Ответ 2
Два варианта:
Деление после умножения:
int n = 25;
int v = 100;
int percent = n * 100 / v;
Преобразуйте int
в float
, прежде чем делить
int n = 25;
int v = 100;
float percent = n * 100f / v;
//Or:
// float percent = (float) n * 100 / v;
// float percent = n * 100 / (float) v;
Ответ 3
Один из них должен быть поплавком. Один из возможных способов обеспечения:
float percent = (float) n/v * 100;
В противном случае вы выполняете целочисленное деление, которое обрезает числа. Кроме того, вы должны использовать double
, если нет веских причин для float
.
В следующей проблеме вы столкнетесь с тем, что некоторые из ваших процентов могут выглядеть как 24.9999999999999% вместо 25%. Это связано с точностью потерь в представлении с плавающей запятой. Вам придется решить, как с этим справиться. Параметры включают DecimalFormat, чтобы "исправить" форматирование или BigDecimal для представления точных значений.
Ответ 4
float percent = (n / (v * 1.0f)) *100
Ответ 5
Чтобы сделать десятичную цифру в процентах, вы можете сделать это,
float percentage = (correct * 100.0f) / questionNum;