Округление вверх и вниз числа С++

Вопрос:Я пытаюсь разрешить моей программе округлять число вверх и вниз соответственно. Например, если число 3.6, моя программа должна округлить ближайшее число, которое равно 4, а если число 3.4, оно будет округлено до 3. Я попытался использовать библиотеку ceil, чтобы получить среднее значение из 3 элементов. results = ceil((marks1 + marks2 + marks3)/3) Однако ceil только

Вопрос:

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

Например, если число 3.6, моя программа должна округлить ближайшее число, которое равно 4, а если число 3.4, оно будет округлено до 3.

Я попытался использовать библиотеку ceil, чтобы получить среднее значение из 3 элементов.

results = ceil((marks1 + marks2 + marks3)/3)

Однако ceil только округляет число вниз, но не свертывает номер вверх.

Там 1 алгоритм наткнулся на

var roundedVal = Math.round(origVal*20)/20;

но я все еще не могу определить формулу для некоторой проблемы.

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

округляется до ближайшего целого числа

std::floor

округляется до ближайшего целого числа

std::round

выполняет ожидаемое поведение

просьба указать пример использования с номерами, если это не дает вам то, что вам нужно!

Ответ №1

Нужная функция называется round, хотите верьте, хотите нет.

ceil округляется, кстати. То есть с ближайшим большим целым числом. floor округляется.

Ответ №2

std::round может быть тот, который вы ищете. Однако имейте в виду, что он возвращает float. Вы можете попробовать lround или llround, чтобы получить результат длинным или длинным (С++ 11).

http://en.cppreference.com/w/cpp/numeric/math/round

Ответ №3

Вам не нужна функция для округления в C или C++. Вы можете просто использовать простой трюк. Добавьте 0,5, а затем приведите к целому числу. Это, вероятно, все вокруг делает в любом случае.

double d = 3.1415; double d2 = 4.7; int i1 = (int)(d + 0.5); int i2 = (int)(d2 + 0.5);

i1 – 3, а i2 – 5. Вы можете проверить это сами.

Ответ №4

В c++, включая библиотеку cmath, мы можем использовать различные функции, которые округляют значение как вверх, так и вниз.

std::trunc

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

std::ceil

Используется для округления до ближайшего целочисленного значения.

std::floor

Используется для округления до ближайшего целочисленного значения.

std::round

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

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