Estou tentando resolver essa questão em java e peço a ajuda de vcs:
Dado um número positivo ? N>1 ? e calcular o valor do somatório 1/N + 1/(N+1) + 1/
(N+2) + ? com precisão de cinco casas decimais.
a minha dificuldade é com essa parte da precisão de 5 casas decimais, eu já procurei na net sobre isso mas não consegui fazer funcionar
segue o código:
[code]public class questao1b {
public float somatório(int n) {
float soma = 0;
for (int i=0; i<10; i++) {
soma += 1/n;
n++;
}
return soma;
}
}[/code]
Fala Rapaz, beleza ?
Então, dei uma olhada aí no teu código, e percebi que nessa linha:
soma += 1/n; // (inteiro(1) DIVIDE inteiro(10)) = INTEIRO (0)
Acontece que, se você dividir um INTEIRO / INTEIRO = INTEIRO.
Ou seja, pelo que eu notei, apenas trocando o int “1” por um float “1.0”, já resolva !
soma += (1.0)/n; // (float(1.0) DIVIDE inteiro(10)) = FLOAT (0.1)
Isso acontece porque, ao colocar um tipo float ali, ele implicitamente transforma o inteiro n em um float também, e vai ter como resultado a divisão de dois FLOATS, ao invés de calcular o valor da divisão de dois inteiros.
Desculpa qualquer bobagem, sou iniciante também !
flws…
valeeu mesmo parceiro
deu certo
só falta “ajustar” a precisão para 5 casas decimais
Essa é fácil
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class Teste {
public static void main(String[] args) {
NumberFormat ds = DecimalFormat.getNumberInstance();
ds.setMinimumFractionDigits(5);
System.out.println( ds.format(1.0 / 3.0) );
}
}
Cara acho que é isso que você quer.
Só inseri df.setMaximumFractionDigits(5); que o thiago.correa esqueceu.
[code]import java.text.DecimalFormat;
public class Principal {
public static void main(String[] args) {
float x = (float) 10/3;
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(5);
df.setMinimumFractionDigits(5);
String valor = df.format(x);
System.out.println(valor);
}
}[/code]
Flw
perfeito
obrigado a todos