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

Вопрос:Как рассчитать несколько процентов от int? например, я хочу получить 30% от числа, если я буду использовать этот пример кода, я получу неправильный ответ: int number = 250; int result = (number / 100) * 30; результат будет 60, а реальный ответ 75, есть ли способ его вычисления? Лучший ответ: Умножьте перед делением: int result

Вопрос:

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

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

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

Лучший ответ:

Умножьте перед делением:

int result = number * 30 / 100;

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

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

int result = number * 0.30;

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

Ответ №1

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

int result = (number * 30) / 100;

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

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

Ответ №2

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

int number = 250; int result = static_cast<double>(number) / 100 * 30; Ответ №3

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

int number = 250; float result = number * (float)(30/100.0); Ответ №4

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

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

int result = (number / 100.0) * 30; Ответ №5

Использовать float:

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

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

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

Ответ №6

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

int number = 250; int result = number * 100; result = (result / 100) * 30; result /= 100; Ответ №7

Вся программа похожа:

double number , result; cout << «Enter the number:»; cin >> number; result = number * 30.0 / 100; cout << «Result = » << result << endl;

и вы получите ответ…

Ответ №8

оценка/товар * 30
ех;

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;

Оцените статью
Добавить комментарий