ron_lima
(usa Slackware)
Enviado em 22/05/2009 - 23:35h
Truncar o resultado de uma operação de ponto flutuante usando casting para int é, no mínimo, temerário. Isso por que o tipo inteiro pode ter tamanho menor que o tipo double ou float, dependendo da plataforma. O ideal é utilizar-se de algumas funções da biblioteca STDC-99, como ceil, floor ou trunc, dependendo de como você quer seu resultado.
Eis os protótipos dessas funções, conforme podem ser encontradas em math.h:
double ceil (double);
double floor (double);
double truncate (double);
Há funções similares para o tipo de precisão simples: ceilf, floorf e truncf.
Eis uma rápida descrição dessas funções:
- ceil irá calcular o menor valor integral que não seja menor que o argumento.
- floor irá calcular o maior valor integral que não seja maior que o argumento;
- trunc irá desprezar os valores decimais de um número em ponto flutuante.