FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD
Материал из cppreference.com
![]() | Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
Определено в заголовочном файле <cfenv> | ||
#define FE_DOWNWARD /*implementation defined*/ | (начиная с C++11) | |
#define FE_TONEAREST /*implementation defined*/ | (начиная с C++11) | |
#define FE_TOWARDZERO /*implementation defined*/ | (начиная с C++11) | |
#define FE_UPWARD /*implementation defined*/ | (начиная с C++11) | |
Каждый из этих макросов константы расширяется до неотрицательное целочисленное постоянное выражение, которое может использоваться с меня std::fesetround и std::fegetround, чтобы указать один из поддерживаемых плавающей точкой, режимы округления. Реализация может определить дополнительные константы режима округления в
<cfenv>
, которые должны все начинать с FE_
следуют по крайней мере одной заглавной буквы. Каждый макрос определен только если она поддерживается.Оригинал:
Each of these macro constants expands to a nonnegative integer constant expression, which can me used with std::fesetround and std::fegetround to indicate one of the supported floating-point rounding modes. The implementation may define additional rounding mode constants in
<cfenv>
, which should all begin with FE_
followed by at least one uppercase letter. Each macro is only defined if it is supported.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
В большинстве реализаций этих макро константы расширить до значений, равных значениях FLT_ROUNDS и std::float_round_style
Оригинал:
On most implementations, these macro constants expand to the values equal to the values of FLT_ROUNDS and std::float_round_style
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Constant Оригинал: Constant Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. | Explanation |
FE_DOWNWARD | округление к минус бесконечности Оригинал: rounding towards negative infinity Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
FE_TONEAREST | округления к ближайшему целому Оригинал: rounding towards nearest integer Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
FE_TOWARDZERO | округление к нулю Оригинал: rounding towards zero Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
FE_UPWARD | округление к плюс бесконечности Оригинал: rounding towards positive infinity Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
Дополнительные режимы округления может быть поддержана реализация.
Оригинал:
Additional rounding modes may be supported by an implementation.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править]Пример
Запустить этот код
#include <cmath>#include <cfenv>#include <iostream> int main(){#pragma STDC FENV_ACCESS ONstd::fesetround(FE_DOWNWARD);std::cout<<"rounding using FE_DOWNWARD: \n"<<std::fixed<<" 12.0 -> "<<std::nearbyint(12.0)<<'\n'<<" 12.1 -> "<<std::nearbyint(12.1)<<'\n'<<"-12.1 -> "<<std::nearbyint(-12.1)<<'\n'<<" 12.5 -> "<<std::nearbyint(12.5)<<'\n'<<" 12.9 -> "<<std::nearbyint(12.9)<<'\n'<<"-12.9 -> "<<std::nearbyint(-12.9)<<'\n'<<" 13.0 -> "<<std::nearbyint(13.0)<<'\n';std::fesetround(FE_TONEAREST);std::cout<<"rounding using FE_TONEAREST: \n"<<" 12.0 -> "<<std::nearbyint(12.0)<<'\n'<<" 12.1 -> "<<std::nearbyint(12.1)<<'\n'<<"-12.1 -> "<<std::nearbyint(-12.1)<<'\n'<<" 12.5 -> "<<std::nearbyint(12.5)<<'\n'<<" 12.9 -> "<<std::nearbyint(12.9)<<'\n'<<"-12.9 -> "<<std::nearbyint(-12.9)<<'\n'<<" 13.0 -> "<<std::nearbyint(13.0)<<'\n';}
Вывод:
rounding using FE_DOWNWARD: 12.0 -> 12.000000 12.1 -> 12.000000 -12.1 -> -13.000000 12.5 -> 12.000000 12.9 -> 12.000000 -12.9 -> -13.000000 13.0 -> 13.000000 rounding using FE_TONEAREST: 12.0 -> 12.000000 12.1 -> 12.000000 -12.1 -> -12.000000 12.5 -> 12.000000 12.9 -> 13.000000 -12.9 -> -13.000000 13.0 -> 13.000000
[править]См. также
указывает режимы округления с плавающей запятой (перечисление) | |
(C++11)(C++11) | получает или устанавливает направление округления (функция) |