[RESOLVIDO] numero muito grande

9 respostas
M

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 ..

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;
	}

}

9 Respostas

JoaoBluSCBR

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

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

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

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

M

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

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;
L

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)");
        }

abrxx

Criado 19 de agosto de 2011
Ultima resposta 19 de ago. de 2011
Respostas 9
Participantes 4