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