Получить процент числа в C++

как я могу вычислить несколько процентов int?
например я хочу получить 30% от числа, если я буду использовать этот пример кода, я получаю неправильный ответ:

int number = 250;
int result = (number / 100) * 30;  

результат будет 60, и реальный ответ 75, есть ли способ, чтобы вычислить это?

9 ответов


умножение перед делением:

int result = number * 30 / 100;

причина, по которой вы получаете результат, заключается в том, что деление с целочисленными типами дает целочисленный результат: 250 / 100 равно 2. Если вы умножаете перед разделением, вы все равно получаете целочисленный результат, но, по крайней мере, вы не потеряли данные в промежуточных шагах. Если вам приходится иметь дело с очень большими числами существует опасность переполнения диапазона разрешенной int хотя.

в качестве альтернативы вы можете использовать арифметику с плавающей запятой, где деление может производить дроби целых чисел:

int result = number * 0.30;

Это может привести неожиданные результаты хотя, поэтому вам лучше использовать целые числа, как указано выше. Или написать 3.0/10 вместо 0.30.


предполагая, что числа малы( ish), вы можете просто повернуть его:

 int result = (number * 30) / 100;

(скобка не требуется, но помогает уточнить).

Это не будет работать, если любое из чисел несколько миллионов, но должно быть хорошо для чисел меньше этого.


переключение операндов (как предлагали другие) тоже будет работать, но на всякий случай, если вы этого не хотите, есть другое решение:

int number = 250;
int result = static_cast<double>(number) / 100 * 30; 

попробуйте это,

int number = 250;
float result = number  * (float)(30/100.0);

вам нужно выполнить математику с плавающей запятой, иначе компилятор выполняет всю арифметику здесь как целые числа.

вы можете попробовать

int result = (number / 100.0) * 30;

используйте float:

float number = 250;
float result = (number / 100.0) * 30

также просто положить туда 100.0 с точкой deciaml может быть достаточно.

потому что если вы сделаете это по-своему 250 / 100 в integer равно 20( вы можете поместить 100 в 200 только дважды, а integer не заботится об остальных 50) и раз 30 = 60.


теперь я думаю о некотором решении:

int number = 250;
int result = number * 100;
result = (result / 100) * 30;
result /= 100;

вся программа похожа на:

double number , result;

cout << "Enter the number:";
cin >> number;

result = number * 30.0 / 100;
cout << "Result = " << result << endl;

и вы получите свой ответ....


оценка / предметы*30 ex;

15%

int score, items;
cout<<"input your score"<< score<<endl;
cin>>score;
cout<<"input number of items"<<items<<endl;
cin>>items;
float total=score/items*15
cout<<"you got "<<total<<""<<endl;