Среда с плавающей запятой
Среда с плавающей запятой — это набор флагов состояния с плавающей запятой и режимов управления, поддерживаемых реализацией. Она локальна для потока, каждый поток наследует начальное состояние своей среды с плавающей запятой от родительского потока. Операции с плавающей запятой изменяют флаги состояния с плавающей запятой, чтобы указывать аномальные результаты или вспомогательную информацию. Состояние режимов управления с плавающей запятой влияет на результаты некоторых операций с плавающей запятой.
Доступ к среде с плавающей запятой и ее изменение имеют смысл только тогда, когда #pragma STDC FENV_ACCESS установлено в ON. В противном случае реализация свободна предполагать, что режимы управления с плавающей запятой всегда являются значениями по умолчанию, а флаги состояния с плавающей запятой никогда не проверяются и не изменяются. На практике немногие современные компиляторы, такие как HP aCC, Oracle Studio и IBM XL, явно поддерживают #pragma, но большинство компиляторов все же позволяют осмысленно обращаться к среде с плавающей запятой.
Типы
Определено в заголовке <fenv.h> |
|
|---|---|
fenv_t | Тип, представляющий всю среду с плавающей запятой |
fexcept_t | Тип, представляющий все флаги состояния с плавающей запятой коллективно |
Функции
|
(C99) | очищает указанные флаги состояния с плавающей запятой (функция) |
|
(C99) | определяет, какие из указанных флагов состояния с плавающей запятой установлены (функция) |
|
(C99) | поднимает указанные исключения с плавающей запятой (функция) |
|
(C99)(C99) | копирует состояние указанных флагов состояния с плавающей запятой из или в среду с плавающей запятой (функция) |
|
(C99)(C99) | получает или устанавливает направление округления (функция) |
|
(C99) | сохраняет или восстанавливает текущую среду с плавающей запятой (функция) |
|
(C99) | сохраняет среду, очищает все флаги состояния и игнорирует все будущие ошибки (функция) |
|
(C99) | восстанавливает среду с плавающей запятой и поднимает ранее поднятые исключения (функция) |
Макросы
|
(C99) | исключения с плавающей запятой (макроконстанта) |
|
(C99) | направление округления с плавающей запятой (макроконстанта) |
|
(C99) | среда с плавающей запятой по умолчанию (макроконстанта) |
Ссылки
- Стандарт C23 (ISO/IEC 9899:2023):
- 7.6 Среда с плавающей запятой <fenv.h> (стр.: TBD)
- 7.31.4 Среда с плавающей запятой <fenv.h> (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.6 Среда с плавающей запятой <fenv.h> (стр.: 150-156)
- 7.31.4 Среда с плавающей запятой <fenv.h> (стр.: 332)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.6 Среда с плавающей запятой <fenv.h> (стр.: 206-215)
- 7.31.4 Среда с плавающей запятой <fenv.h> (стр.: 455)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.6 Среда с плавающей запятой <fenv.h> (стр.: 187-196)
См. также
Документация C++ для Floating-point environment |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/fenv