pessoal eu to com uma dúvida aqui, eu programava em C e tinha a opção de escolher quantas casas decimais queria aparecer no número, era %.2f (2 casas decimais)
e em java tenho um programa pra fazer mas tá dando erro e acho que é pq o resultado é muito grande.. fiz o teste com 2 elevado a 5,5 e deu erro, mas quando faço 2 elevado a outro numero inteiro dá certo, mas o programa é pra fazer elevado à número decimal ..
se alguém souber como posso fazer funcionar ..
packageaula_3;/*5. Faça uma função main que leia dois valores do teclado, um que é um ponto flutuante e outro que é um inteiro, passe esses dois valores como argumento para uma função, que você também deve implementar, chamada eleva. Essa função retorna o primeiro argumento elevado ao segundo. Imprima na tela este valor retornado pela função eleva.*/importjava.util.Scanner;publicclassExercicio5{publicstaticvoidmain(String[]args){inta;doubleb;Scannerent=newScanner(System.in);System.out.print("Número 1: ");a=ent.nextInt();System.out.print("Número 2: ");b=ent.nextDouble();System.out.print(+a+" elevado à "+b+" = "+eleva(a,b));}publicstaticdoubleeleva(intx,doubley){doublei=(double)(Math.pow(x,y));returni;}}
Não tem nada errado no seu código e no resultado que ele produz.
Só pude imaginar que você na hora de digitar o 5,5
usou virgula.
Lembra que valores decimais em java são com PONTO : 5.5
JoaoBluSCBR
Mais um detalhe, em java também podem ser usados os literais %.2f
Regras para representar literais fracionários (de ponto flutuante)[editar] Regras básicasOs literais do tipo float são representados colocando-se a letra F ou f após o número. Por exemplo:
12f
22F
Observação: é importante a utilização do F (ou f) após o número para representar o tipo float já que sua omissão implicará que o literal passe a ser automaticamente interpretado como sendo do tipo double. Por exemplo:
Os literais do tipo double são representados colocando-se a letra D ou d após o número.
12d
22D
A separação entre a parte inteira e fracionário do número é feita através do ponto - ao invés da vírgula. Por exemplo:
12.0f representa o número 12
22.23F representa o número 22,23
Caso a parte inteira seja 0 (“zero”), ela poderá ser omitida desde que se coloque o ponto (representando a vírgula) e a parte fracionária. Por exemplo:
.1f representa o número 0,1
.0F representa o número 0
[editar] Outras variações de representaçãoOs literais fracionários também podem ser representados com o uso de uma exponenciação em base 10, ou seja, através do número seguido da letra e ou E seguido do expoente de base 10 a ser multiplicado e do f ou F. Exemplo:
1e3f representa o número , ou seja, 1000
-1e3F representa o número , ou seja, -1000
1e-2F representa o número , ou seja, 0,01
-1e-3F representa o número , ou seja, -0,001
Exista também a representação de literais fracionários em hexadecimal.
a fazer
M
muriloleite_
cara, ele tá dando erro aqui … eu coloquei com ponto no lugar da vírgula
olha o programa rodando no Eclipse o erro que aparece
Número 1: 3
Número 2: 1.2
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at funções_18_8.Exercicio5.main(Exercicio5.java:16)
JoaoBluSCBR
Essa classe Scanner é muito tosca. kkkkk
Eu digitei 2 e dei enter
depois digitei 5,5 e dei enter
e funcionou.
usando virgula na digitacao ele transforma internamente em 5.5 e usa para o calculo.
Usando PONTO ele não entende como double.
M
muriloleite_
JoaoBluSCBR:
Essa classe Scanner é muito tosca. kkkkk
Eu digitei 2 e dei enter
depois digitei 5,5 e dei enter
e funcionou.
usando virgula na digitacao ele transforma internamente em 5.5 e usa para o calculo.
Usando PONTO ele não entende como double.
testei aqui dessa maneira e funcionou tb … mas que estranho, não era pra acontecer assim ne? pq ate onde sei o certo é usar ponto e não virgula pra representar decimais, quando vc vai atribuir algum valor tem que ser ponto … ex: variavel = 5.5;
mas valeu ai… é que to começando ainda e não conheço muitas coisas sobre Java
JoaoBluSCBR
Eu imagino, só imagino que isso tenha algo a ver com a configuração da tua máquina para
usar pontos ou virgulas como numero decimal digitado.
Mas nunca tinha reparado nisso.
abs
X
xxgiovannixx
Já ouviu falar em DecimalFomat?
Exemplo:
DecimalFormat formatar = new DecimalFormat ("#0.000");
System.out.println("O valor é " + formatar.format(valor));
Não sei se a codificação está correta, se estiver me avise
fala giovanni, testei aqui e funcionou … e esse ("#0.000"); é pra escolher a quantidade de casas decimais dps da virgula, nesse caso são 3 casas decimais
só que não tem que esquecer de importar essa ‘biblioteca’ (não sei como chama no Java, no C era biblioteca, rsrs)
importjava.text.DecimalFormat;
L
lokits5
que estranho eu uso DOUBLE e ele não aceita virgulas apenas ponto ate coloquei uma msg para isso.
ex:
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Digite um numero inteiro para 'Quantidade em Estoque'\n\nDigite um numero para 'Preço' usando . (ponto) ao invés de , (virgula)");
}