Arredondamento

1. Arredondamento

Mauro
kenny

(usa Outra)

Enviado em 28/03/2007 - 17:02h

#include <stdio.h>

int main()
{
float total, aux;
aux = 1/(float)100;
printf("%f\n",aux); //0.010000
total = 1000 + aux;
printf("%f\n",total); //1000.010010
return 0;
}


======================

Queria fazer com que o resultado fosse 1000.010000 e não com aquele final de casa a mais ali q nao deveria existir (1000.010010). Arredondar até a casa decimal q eu quero tem como isso?
Não é deixar de mostrar o final, é não arredondar aquele final ali.


  


2. Re: Arredondamento

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 01/04/2007 - 15:56h

como assim?

tipo.. ao inves de imprimir "0.1003"
voce que imprimir "0.10"

Delimitar o numero de casas decimais?

main(){
printf("%.2f\n", 1.23456);
}

O programa imprime na tela so 1.23

Se num for isso que voce perguntou foi mal ter entendido errado


3. Respondendo

Vinícius Veloso de Mello Garcia
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


4. PS:

Vinícius Veloso de Mello Garcia
starfox00

(usa Outra)

Enviado em 05/01/2010 - 17:39h

Depois de postar o ultimo post eu descobri a função 'round(x)' que faz o mesmo que o ARRED(x) :P

com isso da pra simplificar um pouco o que eu fiz ai encima.
(PS: eu to com o Dev C++ pra windows, então não sei se esse round é padrão de C)

(e sim eu não uso linux :P, so vim te responder mesmo)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts