[RESOLVIDO] numero muito grande

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 …

[code]package aula_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.
/

import java.util.Scanner;

public class Exercicio5 {

public static void main(String[] args) {
	
	int a;
	double b;
	
	Scanner ent = new Scanner (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));

}

public static double eleva (int x, double y){
	double i = (double) (Math.pow(x,y));
	
	return i;
}

}[/code]

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

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

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)

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.

[quote=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.

[/quote]

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

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

Já ouviu falar em DecimalFomat?

Exemplo:

DecimalFormat formatar = new DecimalFormat ("#0.000");

    System.out.print("Número 1: ");   
    a = ent.nextInt();   
    System.out.print("Número 2: ");   
    b = ent.nextDouble();   

    double  valor= Math.pow(a,b);

System.out.println("O valor é " + formatar.format(valor));

Não sei se a codificação está correta, se estiver me avise

[quote=xxgiovannixx]Já ouviu falar em DecimalFomat?

Exemplo:

DecimalFormat formatar = new DecimalFormat ("#0.000");

    System.out.print("Número 1: ");   
    a = ent.nextInt();   
    System.out.print("Número 2: ");   
    b = ent.nextDouble();   

    double  valor= Math.pow(a,b);

System.out.println("O valor é " + formatar.format(valor));

Não sei se a codificação está correta, se estiver me avise[/quote]

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)

import java.text.DecimalFormat;

que estranho eu uso DOUBLE e ele não aceita virgulas apenas ponto ate coloquei uma msg para isso.

ex:

[code]} 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)");
    }[/code]

abrxx