Russian Qt Forum
Ноябрь 13, 2019, 16:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: в заголовке <cmath> отсутствует round  (Прочитано 8207 раз)
Karl-Philipp
Гость
« : Апрель 12, 2008, 08:23 »

Здравствуйте,

искал функцию для возврата аргумента, округленного до ближайшего целого числа. Нашел в справочнике Г.Шилдта по С функции round(), roundf(), roundl().
вписал заголовочный файл <math.h>, использую в программе
Цитировать
float roundf(float arg);
а в ответ:

Цитировать
error C2065: 'roundf' : undeclared identifier

VS 7.0
Получается нет такой функции в <math.h>

открыл справочник по С++. Нашел функции floor() и сeil(). Первая из них округляет в сторону большего числа, вторая - в сторону меньшего... Функции round() в справочнике по С++ не нашел Грустный

Подскажите, пожалуйста, что можно вместо round использовать?
« Последнее редактирование: Апрель 12, 2008, 10:03 от terlan » Записан
Sancho_s_rancho
Гость
« Ответ #1 : Апрель 12, 2008, 20:30 »

floor(x+0.5) - в самом простом случае(для положительных ч).
А так - в гугл
Записан
Karl-Philipp
Гость
« Ответ #2 : Апрель 12, 2008, 21:02 »

floor(x+0.5) - в самом простом случае(для положительных ч).
А так - в гугл

хм... а что же нам даст добавление 0,5?
толку то с того, все равно будет округлять в сторону большего числа.

Гуглил - не нашел.
Странно то, что раунда нет в с++ Почему Непонимающий
Записан
Karl-Philipp
Гость
« Ответ #3 : Апрель 13, 2008, 12:58 »

плохо искал  Обеспокоенный
Санчо, Вы таки правы Улыбающийся спасибо большое

Цитировать
double fRoundVal = floor(floatVal1 + 0.5);
int iRoundVal = floatVal1 + 0.5;

работает
Записан
Tonal
Супер
******
Offline Offline

Сообщений: 1042


Карма Кагью


Просмотр профиля WWW
« Ответ #4 : Апрель 14, 2008, 07:31 »

Код:
#include <iostream>

template <class Int, class Float>
Int RoundTo(Float val) {
  return static_cast<Int>(val >= 0 ? val + .5 : val - .5);
}

int main() {
  std::cout<<RoundTo<int>(-3.6)<<std::endl;
}
Записан
Karl-Philipp
Гость
« Ответ #5 : Апрель 14, 2008, 08:29 »

спасибо огромнейшее Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.081 секунд. Запросов: 23.