C ++ версия isnormal () - PullRequest
       80

C ++ версия isnormal ()

2 голосов
/ 05 октября 2009

Существует ли C ++ версия isnormal, isnan и т. Д. Функций C? Я знаю, что могу использовать функции C из C ++, но мне всегда интересно знать, есть ли какие-нибудь альтернативы только для C ++.

Ответы [ 5 ]

5 голосов
/ 05 октября 2009

Они включены в <cmath> в проекте C ++ 0x:

template <class T> int fpclassify(T x);
template <class T> bool isfinite(T x);
template <class T> bool isinf(T x);
template <class T> bool isnan(T x);
template <class T> bool isnormal(T x);
2 голосов
/ 05 октября 2009

Нет такой функциональности в стл. Вы можете проверить это в ссылке: cppreference

Функциональность C была помещена в C ++, а API доступны через заголовки без постфикса "* .h" и с префиксом "c" Пример

<cstdlib>

Но я уверен, что Вы знаете об этом.

Если вы ищете что-то похожее, вы, вероятно, найдете множество C-подобных функций в удивительной библиотеке boost . Большинство классов будет введено в новый стандарт C ++, поэтому его стоит изучить.

подталкивание

1 голос
/ 05 октября 2009

Не так, как я знаю.Не похоже, что есть один в STL.Поскольку это такая простая функция, я думаю, они не хотели тратить время на ее замену.Старая версия С работает нормально.Я бы сказал, просто продолжать использовать C isnormal ().

1 голос
/ 05 октября 2009
1 голос
/ 05 октября 2009

Точный дубликат вопроса

Примечание: isnan, isnormal и подобные им довольно легко переопределить, поскольку из-за стандартов IEEE существуют простые правила (соблюдаемые в реализации float / double C ++), чтобы проверить, является ли число «конечным» или нет. т.е. если «а есть нано», то «а есть! = а» .

...