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?
[code]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);
}
}[/code]
Enadrov
Fevereiro 3, 2013, 1:14pm
#2
Se não me engano é assim.
System.out.printf("%.2f", imc);
Assim vai ficar com 2 casas decimais.
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.
sibit01
Fevereiro 3, 2013, 1:16pm
#4
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));
E Math.round faz o arredondamento que estamos acostumados a fazer.
andy11x
Fevereiro 3, 2013, 1:26pm
#6
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)));
}
Essa é uma maneira extremamente cara e complexa de chegar no resultado…
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.