Подтвердить что ты не робот

Процент от двух 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, я делаю проект, используя это для программы проверки викторины, поэтому мне нужен процент или десятичный знак)

4b9b3361

Ответ 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;