FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD
Материал из cppreference.com
|
|
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
<metanoindex/>
<tbody> </tbody>| Определено в заголовочном файле <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 ON
std::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) |
получает или устанавливает направление округления (функция) |