Округление вверх и вниз числа С++
Я пытаюсь разрешить моей программе округлять число вверх и вниз соответственно.
Например, если число 3.6
, моя программа должна округлить ближайшее число, которое равно 4, а если число 3.4
, оно будет округлено до 3.
Я попытался использовать библиотеку ceil
, чтобы получить среднее значение из 3 элементов.
results = ceil((marks1 + marks2 + marks3)/3)
Однако ceil
только округляет число вниз, но не свертывает номер вверх.
Там 1 алгоритм наткнулся на
var roundedVal = Math.round(origVal*20)/20;
но я все еще не могу определить формулу для некоторой проблемы.
Ответы
Ответ 1
std::ceil
округляется до ближайшего целого числа
std::floor
округляется до ближайшего целого числа
std::round
выполняет ожидаемое поведение
просьба указать пример использования с номерами, если это не дает вам то, что вам нужно!
Ответ 2
Нужная функция называется round, хотите верьте, хотите нет.
ceil
округляется, кстати. То есть с ближайшим большим целым числом. floor
округляется.
Ответ 3
std::round
может быть тот, который вы ищете. Однако имейте в виду, что он возвращает float. Вы можете попробовать lround
или llround
, чтобы получить результат длинным или длинным (С++ 11).
http://en.cppreference.com/w/cpp/numeric/math/round
Ответ 4
Вам не нужна функция для округления в 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. Вы можете проверить это сами.
Ответ 5
В c++, включая библиотеку cmath, мы можем использовать различные функции, которые округляют значение как вверх, так и вниз.
std::trunc
Это просто усекает десятичную часть, то есть цифры после десятичной точки независимо от того, что такое десятичная дробь.
std::ceil
Используется для округления до ближайшего целочисленного значения.
std::floor
Используется для округления до ближайшего целочисленного значения.
std::round
Это округляет до ближайшего целого значения, в зависимости от того, какое из значений ближе всего, то есть может быть округлено вверх или округлено.