Ir ao conteúdo

Posts recomendados

Postado

eu preciso de uma ajuda de vocês nessa situação. dado um número qualquer tipo 10.896745 eu preciso de uma função que arredondasse para cima se a parte depois do ponto for maior q 0.5 e pra baixo se for menor ou igual a 0.5

Tá vocês podem tá achando q é fácil,mas é isso td sem usar vetor :ahh:

quem puder me ajudar eu agradeço :bye:

Postado

em C se você tem uma variável q vai sair de uma função float por exemplo pra transformá-la em int basta declará-la como int ou então usar o cast (int) x por exemplo

mas esse tipo de arredondamento não funciona porque ele sempre arrendonda pra baixo independente do valor

Exemplo: 10.01 e 10.96 nesse método são arredondados ambos pra 10 ao invés de 10 e 11 <_<

Postado

Pra qualquer linguagem, sempre funciona:

IP(X*10^n)/10^n

Onde IP e o comando para se obter a parte inteira, X é o valor e n é o nº de casas que se deseja obter.

Postado

andrems, realmente funciona, mas e um exemplo disso em C?

faz tempo que não brinco com ele, não consigo me lembrar de uma função que pegue somente a parte inteira, se puder dizer, agradeço.

não pode ser int porque é declaração de variavel... mardito vb na veia =D

Postado

consigui fazer essas duas funções q estão funcionando beleza


int arredondamento1(double num)
{
   int num_int = num;
   if( (num - num_int) >= 0.5) return (num_int +1);
   else return num_int;
}

e essa

int arredondamento (double numero)
{   double fracao,inteiro;
   fracao = modf(numero,&inteiro);
   if (fracao> 0.5) return inteiro+1;
   else return inteiro;
}

valeu pela ajuda aí pessoal :palmas:

  • 1 ano depois...
Postado

Tente fazer assim:

Function Arredondar(dblNumber As Double, IntDecimais As Integer) As Double

Dim dblfator As Double

Dim dblTemp As Double

dblfator = 10 ^ IntDecimais

dblTemp = dblNumber * dblfator + 0.5

Arredondar = Int(dblTemp) / dblfator

End Function

eu fiz isso no modulo, no meu caso resolveu o problema, de outra forma só consegui jogar uma mascara, quando fui fazer a conta não dava certo.

ex: 1,224 + 1,224 = 1,448 o que arredondando dá 1,45. quando você trunca o número como né feito nesta função aciima ele arredonda o número para 1,22 {arredondar(1,22,2)} o resultado será 2,44.

obs: aquele número 0.5 é uma regra do aredondamento, assim se o número anterior for igual ou maior que 5 ele arredonda para cima, que é o padrão....

espero ter ajudado, em todo caso, copia a função acima e tenta...

  • 11 anos depois...
Postado

Se você quer apenas pegar um número e arredondar, você pode declarar uma variável em float ou double, dependendo da precisão do número recebido. Um double recebe uma precisão maior, 8bytes, e o float, 4 bytes. 

Comece o código chamando as bibliotecas necessárias, declare a variável, faça um scanf para recebê-la, e jogue-a num round. Vou te mandar um exemplo comentado:

 

#include<stdio.h>  //biblioteca padrão
#include<math.h>  //biblioteca matemática


int main(){

    float num; //declaração da váriavel num

    scanf("%f", &num); //lendo a variável num

    round(num);  //joguei a variável no round para ele fazer o processo

    printf("%.0f\n", num); //escrevi na tela o resultado do processo que o round fez
}

arredondar.png

  • 2 anos depois...
Postado

Método 100% funcional.

 

float valor;
//valor sera quem vai ser arredondado


float aux = valor;

// declaramos uma variável auxiliar, no caso aux 


valor = ((int)(100*valor2))/100.0;

// agora é só colocar essa equação e o valor será arredondado. 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...