modf, modff, modfl

Divide um valor de ponto flutuante em partes inteiras e fracionárias.

Sintaxe

double modf( double x, double * intptr );
float modff( float x, float * intptr );
long double modfl( long double x, long double * intptr );
float modf( float x, float * intptr );  // C++ only
long double modf( long double x, long double * intptr );  // C++ only

Parâmetros

x
Valor de ponto flutuante.

intptr
Ponteiro para a parte inteira armazenada.

Valor retornado

Esta função retorna a parte fracionária com sinal de x. Não há retorno de erro.

Comentários

As funções modf dividem o valor de ponto flutuante x em partes inteiras e fracionárias, cada uma delas tem o mesmo sinal que x. A parte fracionária com sinal de x é retornada. A parte inteira é armazenada como um valor de ponto flutuante em intptr.

modf tem uma implementação que usa SSE2 (Extensões SIMD de Streaming 2). Confira _set_SSE2_enable para obter informações e restrições sobre como usar a implementação de SSE2.

O C++ permite sobrecargas, de modo que é possível chamar sobrecargas de modf que usam e retornam os parâmetros float ou long double. Em um programa C, modf sempre usa dois valores duplos e retorna um valor duplo.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.

Requisitos

Rotina Cabeçalho necessário
modf, modff, modfl C: <math.h>

C++: , <cmath> ou <math.h>

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

Exemplo

// crt_modf.c

#include <math.h>
#include <stdio.h>

int main( void )
{
   double x, y, n;

   x = -14.87654321;      /* Divide x into its fractional */
   y = modf( x, &n );     /* and integer parts            */

   printf( "For %f, the fraction is %f and the integer is %.f\n",
           x, y, n );
}
For -14.876543, the fraction is -0.876543 and the integer is -14

Confira também

Suporte matemático e de ponto flutuante
frexp
ldexp