Precisão de casas decimais [RESOLVIDO]

5 respostas
M

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:

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

5 Respostas

G

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…

M

valeeu mesmo parceiro
deu certo
só falta “ajustar” a precisão para 5 casas decimais

thiago.correa

Essa é fácil :smiley:

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) );		
		
		
	}
}
Frantic_Avenger
Cara acho que é isso que você quer. Só inseri df.setMaximumFractionDigits(5); que o thiago.correa esqueceu.
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);
	}
}

Flw

M

perfeito
obrigado a todos

Criado 21 de setembro de 2010
Ultima resposta 22 de set. de 2010
Respostas 5
Participantes 4