FP_NORMAL, FP_SUBNORMAL, FP_ZERO, FP_INFINITE, FP_NAN
Определено в заголовочном файле <math.h> |
||
|---|---|---|
#define FP_NORMAL /*implementation defined*/ |
(с C99) | |
#define FP_SUBNORMAL /*implementation defined*/ |
(с C99) | |
#define FP_ZERO /*implementation defined*/ |
(с C99) | |
#define FP_INFINITE /*implementation defined*/ |
(с C99) | |
#define FP_NAN /*implementation defined*/ |
(с C99) |
Макросы FP_NORMAL, FP_SUBNORMAL, FP_ZERO, FP_INFINITE, FP_NAN каждый представляют отдельную категорию чисел с плавающей точкой. Все они раскрываются до целочисленного константного выражения.
| Константа | Объяснение |
|---|---|
FP_NORMAL |
указывает, что значение является нормальным, т.е. не является бесконечностью, субнормальным, не числом или нулем |
FP_SUBNORMAL |
указывает, что значение является субнормальным |
FP_ZERO |
указывает, что значение равно положительному или отрицательному нулю |
FP_INFINITE |
указывает, что значение не может быть представлено базовым типом (положительная или отрицательная бесконечность) |
FP_NAN |
указывает, что значение является не числом (NaN) |
Пример
#include <stdio.h>
#include <math.h>
#include <float.h>
const char *show_classification(double x) {
switch(fpclassify(x)) {
case FP_INFINITE: return "Inf";
case FP_NAN: return "NaN";
case FP_NORMAL: return "normal";
case FP_SUBNORMAL: return "subnormal";
case FP_ZERO: return "zero";
default: return "unknown";
}
}
int main(void)
{
printf("1.0/0.0 is %s\n", show_classification(1/0.0));
printf("0.0/0.0 is %s\n", show_classification(0.0/0.0));
printf("DBL_MIN/2 is %s\n", show_classification(DBL_MIN/2));
printf("-0.0 is %s\n", show_classification(-0.0));
printf(" 1.0 is %s\n", show_classification(1.0));
}Вывод:
1.0/0.0 is Inf 0.0/0.0 is NaN DBL_MIN/2 is subnormal -0.0 is zero 1.0 is normal
Справочные материалы
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.12/6 FP_NORMAL, ... (стр. 169-170)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.12/6 FP_NORMAL, ... (стр. 232)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.12/6 FP_NORMAL, ... (стр. 213)
См. также
|
(C99) |
классифицирует данное значение с плавающей точкой (функция-макрос) |
Документация C++ для FP_categories |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/FP_categories