Pular para o conteúdo

Arredondamento

Responder tópico
  • Denunciar
  • Indicar

1. Arredondamento

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.

Responder tópico

2. Re: Arredondamento

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

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:

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)

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder