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