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

std::fegetround, std::fesetround

Материал из cppreference.com
< cpp‎ | numeric‎ | fenv

 
 
 
Среда вещественной арифметики
Функции
fegetroundfesetround
(C++11)(C++11)
(C++11)(C++11)
Макро-константы
(C++11)
 
Определено в заголовочном файле <cfenv>
int fesetround( int round )
(1) (начиная с C++11)
int fegetround()
(2) (начиная с C++11)
1)
Попытки установить с плавающей точкой округления направлении равна round аргумент, который, как ожидается, будет одним из плавающей точкой макросы округления.
Оригинал:
Attempts to establish the floating-point rounding direction equal to the argument round, which is expected to be one of the плавающей точкой макросы округления.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
2)
Возвращает значение плавающей точкой макро округления, что соответствует текущему направлению округления.
Оригинал:
Returns the value of the плавающей точкой макро округления that corresponds to the current rounding direction.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

[править] Параметры

round
округления направления, одно из плавающей точкой макросы округления
Оригинал:
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Возвращаемое значение

1)
0 на успех, ненулевое иначе.
Оригинал:
0 on success, non-zero otherwise.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
2)
плавающей точкой макро округления, описывающие текущее направление округления или отрицательное значение, если направление не может быть определена
Оригинал:
the плавающей точкой макро округления describing the current rounding direction or a negative value if the direction cannot be determined
Текст был переведён автоматически используя Переводчик 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)(C++11)
ближайшее целое число с использованием текущего режима округления
(функция) [править]
(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)
ближайшее целое число с использованием текущего режима округления
с исключением, если результат отличается
(функция) [править]