Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать округление числа через неявное преобразование типа double в целочисленное не используя ceil, floor, rint?

Сокур Евгений Профи (960), на голосовании 5 месяцев назад
Например, дано число 5.55:
double f = 5.55;
как сделать чтобы оно превратилось в 6?
int a = f; // - не помогает, выводится 0.000000
Голосование за лучший ответ
qq Мастер (1077) 6 месяцев назад
Вы можете использовать преобразование типа double в int с добавлением 0.5 перед преобразованием, чтобы получить правильное округление. Вот как это сделать:

```c++
#include <iostream>

int main() {
double f = 5.35;

int a = f + 0.5; // добавляем 0.5 перед преобразованием в int

std::cout << a << std::endl; // выводит 5

return 0;
}
```

Таким образом, значение переменной a будет округлено до ближайшего целого числа. В данном случае, результат будет 5. Если значение переменной f будет 5.45, результатом такого округления будет 6.
Сокур ЕвгенийПрофи (960) 6 месяцев назад
Спасибо большое!
Jurijus ZaksasИскусственный Интеллект (445813) 6 месяцев назад
А если число было отрицательным, родной? Что тогда?
Jurijus Zaksas Искусственный Интеллект (445813) 6 месяцев назад
ИИ выше, как всегда, облажался.
Округление делается так:

 int MyRound(double d) 
{
return (signbit(d) ? -1 : 1) * (abs(d) + 0.5);
}
Похожие вопросы