fegetround, fesetround

Obtém ou define o modo de arredondamento de ponto flutuante atual.

Sintaxe

int fegetround(void);

int fesetround(
   int round_mode
);

Parâmetros

round_mode
O modo de arredondamento a ser definido, como as macros de arredondamento de ponto flutuante. Se o valor não for igual a uma das macros de arredondamento de ponto flutuante, o modo de arredondamento não será alterado.

Valor Retornado

Em caso de sucesso, fegetround retorna o modo de arredondamento como um dos valores de macro de arredondamento de ponto flutuante. Ele retornará um valor negativo se o modo de arredondamento atual não puder ser determinado.

Em caso de sucesso, fesetround retorna 0. Caso contrário, será retornado um valor diferente de zero.

Comentários

As operações de ponto flutuante podem usar um dos vários modos de arredondamento. Elas controlam a direção em que os resultados de operações de ponto flutuante são arredondados quando os resultados são armazenados. Estes são os nomes e comportamentos das macros de arredondamento de ponto flutuante definidas em < fenv. h > :

Macro Descrição
FE_DOWNWARD Arredondar para o infinito negativo.
FE_TONEAREST Arredondar para o mais próximo.
FE_TOWARDZERO Arredondar para zero.
FE_UPWARD Arredondar para o infinito positivo.

O comportamento padrão de FE_TONEAREST é arredondar resultados entre valores representáveis para obter o valor mais próximo com um bit menos significativo (0).

O modo de arredondamento atual afeta essas operações:

  • Conversões de cadeia de caracteres.

  • Os resultados de operadores aritméticos de ponto flutuante fora das expressões constantes.

  • As funções de arredondamento de biblioteca, como rimir e nearbyint.

  • Valores de retorno de funções matemáticas da biblioteca padrão.

O modo de arredondamento atual não afeta essas operações:

  • As funções de biblioteca truncar, Ceil, Floore Lround .

  • Ponto flutuante para conversões e transmissões implícitas de inteiro, que sempre arredondam em direção a zero.

  • Os resultados dos operadores aritméticos de ponto flutuante em expressões de constante, que sempre são arredondados para o valor mais próximo.

Para usar essas funções, você deve desligar otimizações de ponto flutuante que poderiam impedir o acesso usando a diretiva #pragma fenv_access(on) antes da chamada. Para obter mais informações, consulte fenv_access.

Requisitos

Função Cabeçalho C Cabeçalho C++
fegetround, fesetround <fenv. h> <cfenv>

Para obter mais informações sobre compatibilidade, consulte Compatibilidade.

Consulte também

Referência de função alfabética
nearbyint, nearbyintf, nearbyintl
rint, rintf, rintl
lrint, lrintf, lrintl, llrint, llrintf, llrintl