close
Пространства имён
Варианты
Действия

FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD

Материал из cppreference.com

<metanoindex/>

 
 
 
Среда вещественной арифметики
Функции
(C++11)(C++11)
(C++11)(C++11)
Макро-константы
(C++11)
 
<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)
получает или устанавливает направление округления
(функция) [править]