[Resolvido] Ajuda na conversão de Números

7 respostas
juliobianco

Olá!

Estou começando finalmente a aprender a programar. Depois de muito tempo.
Mesmo com 27 anos acho que não é tarde para buscar um sonho.

Mas vamos ao que interessa.

Fiz um código bem básico para cálculo do IMC, mas o retorno não é um numero exato.
Ex:

Digite seu Peso:130
Digite sua Altura:1,85
Seu IMC é --> 37.983929875821765

Quando coloco pra retornar int na var IMC ele retorna 37, mas eu gostaria de retornar arredondando para cima, já que está próximo ao 38, como fazer?

import java.util.Scanner;

public class IMC {
	public static  void main (String args []){;
		Scanner dados = new Scanner(System.in);
		double peso, altura, imc;
		
			System.out.print("Digite seu Peso:");
				peso = dados.nextDouble();
		
			System.out.print("Digite sua Altura:");
				altura = dados.nextDouble();
		
		imc = peso/(Math.pow(altura, 2)); 							

		System.out.print("Seu IMC é --> " +imc);
		
}
}

7 Respostas

Enadrov

Se não me engano é assim.

System.out.printf("%.2f", imc);

Assim vai ficar com 2 casas decimais.

ViniGodoy

Por favor, evite marcar os tópicos com informações inúteis, tais como [Java] ou informações sobre você (no título, precisamos de informações sobre sua dúvida, não sobre sua pessoa).
Leia nosso guia de postagem:

Para arredondar um número, use o método Math.round.

S

Math.ceil: Arredonda o valor pra cima;
Math.flor: Arredonda o valor pra baixo.

faça isso:

System.out.print("Seu IMC é --> " +Math.ceil(imc));
ViniGodoy

E Math.round faz o arredondamento que estamos acostumados a fazer.

A

Ou também…

private static double peso = 0, altura = 0; 
    private static Scanner dados;
    
    private static BigDecimal arredondaUP(double imc){
        return new BigDecimal(imc).setScale(0, RoundingMode.UP);        
    }
    
    public static void main(String[] args){
        dados = new Scanner(System.in);
        System.out.print("Digite seu Peso:");
        peso = dados.nextDouble();
        System.out.print("Digite sua Altura:");
        altura = dados.nextDouble();       
        System.out.print("Seu IMC é --> " + arredondaUP(peso / Math.pow(altura, 2)));       
    }
ViniGodoy

Essa é uma maneira extremamente cara e complexa de chegar no resultado…

juliobianco

Obrigado a todos,

fiz com o Math.round e deu certo.

Vou tentar as dicas das outras postagens para aprendizado.

E desculpa aí ViniGodoy, nos próximos vou saber como perguntar. :wink:

Criado 3 de fevereiro de 2013
Ultima resposta 4 de fev. de 2013
Respostas 7
Participantes 5