
starfox00
(usa Outra)
Enviado em 05/01/2010 - 17:35h
Seguinte, eu fiz duas mini-funções(defines) pra resolver isso
#include <math.h>
#define ARRED(x) floor( x + 0.5 ) //Isso retorna um inteiro
#define ARRED2(x, z) floor( x*pow(10, z) + 0.5 )/pow(10, z) //sendo z o numero de casas decimais
Olha, repara que a primeira só tranforma floats em inteiros, daí eu vi seu problema e adaptei ela pra arredondar a partir da casa decimal que voce quizer, daí apareceu o ARRED2.
então, ARRED(5.45) = ARRED2(5.45, 0) = 5.00 testei isso pra 5 valores de x.
porem, não testei para valores de z != 0, pq num era do meu interesse :P, bem se for usar dá uma testadinha ai antes de usar pq se bobiar funciona ate pra valor de z negativo.
Legenda:
pow(x,y) = função do math.h que retorna x elevado a y
floor(x) = função do math.h que arredonda a parte decimal sempre pra baixo. (floor(9.99) = 9)
por fim taí um site que tem uma funções legais do math.h:
http://200.136.79.4/informatica/alunos/tutoriais/C/LCPP_aulaI_funcoespredefinidas.htm