Возможный дубликат:
Округлить результаты деления до следующего целого числа в c
Есть ли функция, которая округляет double
до следующего целого числа?
1.8 -> 2
1.01 ->2
0.99 ->1
Взгляни на std::floor()
а также std::ceil()
в C ++
std::ceil()
кажется, что вы ищете — Вычисляет ближайшее целое число не меньше чем arg.
Ты можешь использовать:
ceil(input)
или же
floor(1+input);
ceil (double x) возвращает следующий интеграл, который не ниже x
основные функции ceil
, floor
, trunc
; Я полагаю ceil
будет вашим выбором.
Есть этаж(), который всегда округляется до меньшего числа, и CEIL (), который всегда округляется до большего числа.
Чтобы получить нормальное поведение при округлении, вы действительно должны использовать floor (i + 0.5).
Таким образом, у вас возникнут проблемы с отрицательными числами. Обойти эту проблему можно с помощью ceil () для отрицательных чисел:
double round(double r) {
return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5);
}