2015-06-18 1 views
2

Как проверить, является ли значение с плавающей запятой нормальным числом и не имеет каких-либо сырых состояний (+ -inf, ind, nan, qnan, denormal ...).проверить, имеет ли переменная с плавающей точкой «нормальные» значения

Проверка подлинности с ним, похоже, работает на nan, но в других штатах?

К сожалению - я забыл упомянуть, что я привязан к C90 Compiler; (

+0

. Если вы ищете среди [общих функций математики] (http://en.cppreference.com/w/c/numeric/math) в стандартной библиотеке, я уверен, что вы могли бы найти что-то. Например ['isnan'] (http://en.cppreference.com/w/c/numeric/math/isnan), чтобы проверить, является ли значение NaN. –

+0

У вашего 'math.h' есть' fpclassify'? –

+0

@AndreasGrapentin fpclassify не является частью C90 –

ответ

3

Вы можете использовать isnormal макрос:

#include <math.h> 
int isnormal(real-floating x); 

Есть также isfinite, isinf и isnan макросы

+0

i прилагается ограничение c90 –

+0

@ vlad_tepesch Редактирование было сделано после моего ответа; c90 не имеет этих макросов, я предлагаю вам выполнить реализацию 'fpclassify' из небольшого libc like musl и проверить значение' FP_NORMAL'return (при условии, что вы также используете IEEE-754). – ouah

+0

да, это так я сделаю. но я не так доволен этим, потому что код используется на разных платформах и даже на разных процессорных архитектурах. –

Смежные вопросы