Problemas com a função Math.pow [RESOLVIDO]

2 respostas
EhRuimHein

Olá, pessoal!

Sou mais um novato em java aqui no fórum, e me deparei com um problema que não consigo resolver. A questão é com o uso da função Math.pow. No tutorial, diz que nem a base, nem o expoente, podem ser números infinitos (dízimas periódicas). Dessa forma, como eu faço para solucionar um problema com uma potência da seguinte forma:

desc = Math.pow(1+desc/100,1/12) -1 ;

Essa fórmula é utilizada para tranformar uma taxa efetiva em nominal. Vou postar o código todo, e caso alguém tenha alguma sugestão, mesmo que seja a outro respeito, ficaria muito grato!

import java.io.*;
import java.text.*;
public class SAC {
	public static void main (String args[]) {
		
		String Speriodo = "", Svalor = "", Staxa = "", Sdesc;
		double periodo = 0, valor = 0, taxa = 0, saldodev = 0, 
			amort = 0, juros = 0, prest = 0, vpl = 0, vplsoma = 0, 
			desc = 0.0;
		int i = 1;
		BufferedReader entrada;

		try {
			entrada = new BufferedReader(new InputStreamReader(System.in));
			
			System.out.print("Digite o valor: ");
			Svalor = entrada.readLine();
			valor = Double.parseDouble(Svalor);

			System.out.print("Digite o periodo: ");
			Speriodo = entrada.readLine();
			periodo = Double.parseDouble(Speriodo);

			System.out.print("Digite a taxa de juros nominal (% a.a.): ");
			Staxa = entrada.readLine();
			taxa = Double.parseDouble(Staxa);
		
			System.out.print("Digite a taxa de descontos dos fluxos (efetivas) (% a.a.): ");
			Sdesc = entrada.readLine();
			desc = Double.parseDouble(Sdesc);
		}
		catch(IOException e) {
			System.out.println("Houve um erro na entrada de dados!");
		}
		

		DecimalFormat dec = new DecimalFormat( "0.00" );	
		amort = valor/periodo;	
		taxa = taxa/12;
		desc = Math.pow(1+desc/100,1/12) -1 ;
		saldodev = valor;
		while (i <= periodo)
			{
			saldodev= saldodev-amort;
			juros = valor/periodo * (periodo - i + 1) * taxa/100;
			prest = amort + juros;
			vpl = juros / Math.pow(1 + desc, i);
			vplsoma = vplsoma+vpl;
			
			System.out.println(+i+"_____"+dec.format(saldodev)+"_____"+dec.format(amort)+"_____"
			+dec.format(juros)+"_____"+dec.format(prest));
		 	
			i = i+1;
		}
		System.out.println(+vplsoma+"_____"+desc);
	}
		
}

Valew! :D

2 Respostas

T

O problema não é com Math.pow. É que 1/12 == 0 (divisão inteira)

Se você quer passar o valor 1/12 = 0,08333… você precisa usar: 1.0 / 12.0

EhRuimHein

Valeu, thingol!

Agora deu certo o resultado!

Criado 5 de agosto de 2005
Ultima resposta 5 de ago. de 2005
Respostas 2
Participantes 2