Como converter uma String para BigDecimal (RESOLVIDO)

7 respostas
X

Usando a classe JOptionPane estou solicitando ao usuário para inserir um valor, essa variável é do tipo String(inputSaldo), porém para ter valores mais exatos e fazer calculos financeiros quero converter esse valor para BigDecimal, já tentei valueof, ToString. Se essa operação não for possível gostaria de saber um modo de inserir o dado atravéz de interface gráfica diretamente como BigDecimal.

Obs: quando eu fazia utilizando double, Integer e etc, eu utilizava o comando Integer.Parseint();

inputSaldo = JOptionPane.showInputDialog(null, “Favor inserir o valor a ser depositado”);

Obrigado!

7 Respostas

T

http://www.guj.com.br/posts/list/100804.java

R
import java.math.BigInteger;

public class StringBigInteger {

	public static void main(String[] args) {

		String inteirao = "1000000000000000000";

		BigInteger bigInteger = new BigInteger(inteirao);

		System.out.println(bigInteger);
	}

}

Abs!
Danilo

X

import java.math.BigDecimal;
import javax.swing.JOptionPane;

public class Principal {

public static void main(String[] args) {

	int meses,count=1;
	String inputJuros, inputSaldo, inputMeses;
	
	inputSaldo = JOptionPane.showInputDialog(null, "Favor inserir o valor a ser depositado");
	BigDecimal saldo = new BigDecimal(inputSaldo);  
	
	inputMeses = JOptionPane.showInputDialog(null, "Favor inserir o valor a quantidade de meses que este valor irá render");
	meses = Integer.parseInt(inputMeses);
	
	inputJuros = JOptionPane.showInputDialog(null, "Favor digitar a taxa de juros mensais)");
	BigDecimal juros = new BigDecimal(inputJuros);
	
	while (count <= meses)
	{
		saldo = saldo * (juros + 1.00);	
		count++;
		JOptionPane.showMessageDialog(null,"Seu saldo no mes " + meses + " é de R$" + saldo);
	}
	
				
	  
}

}
Galera esse que é o meu código usando a dica de como converter String pra BigDecimal, porém surgiu outro problema, quando eu coloco juros + 1.00 a Ide reclama que não está no formato BigDecimal “Já tentei de diversas formas” e mesmo quando eu tiro o 1.00 a ide reclama que não está definido na classe BigDecimal o que fazer quando estiver o simbolo * (q é multiplicar) me ajudem por favor.
Obrigado!

T

É bom ler a documentação de vez em quando. A classe BigDecimal não redefine os operadores (+, -, *, /) e você precisa chamar os métodos correspondentes.

BigDecimal

X

Obrigado thiago, mas não custava nada me informar os métodos correspondentes agora eu achei, olha como que ficou meu código.

import java.math.BigDecimal;

import java.text.DecimalFormat;

import java.text.DecimalFormatSymbols;

import java.util.*;

import javax.swing.JOptionPane;

public class Principal {

public static void main(String[] args) {
DecimalFormat df = new DecimalFormat ("#,##0.00", new DecimalFormatSymbols (brasil));

int meses,count=0;

String inputJuros, inputSaldo, inputMeses;

BigDecimal um = new BigDecimal(1.00);
inputSaldo = JOptionPane.showInputDialog(null, "Favor inserir o valor a ser depositado");
	BigDecimal saldo = new BigDecimal(inputSaldo);  
	
	inputMeses = JOptionPane.showInputDialog(null, "Favor inserir o valor a quantidade de meses que este valor irá render");
	meses = Integer.parseInt(inputMeses);
	
	inputJuros = JOptionPane.showInputDialog(null, "Favor digitar a taxa de juros (mensais)");
	BigDecimal juros = new BigDecimal(inputJuros);
	
	while (count < meses)
	{
		saldo = saldo.multiply(juros.add(um)); //multiply multiplica e add soma	
		count++;
		JOptionPane.showMessageDialog(null,"Seu saldo no mes " + count + " é de R$" + df.format(saldo));
	}
	
				
	  
}

}

X

faltou o locale.

Locale brasil = new Locale (“pt”, “BR”);

T

Bom, um carinha que trabalha comigo (e meu nome não é Thiago ! ) até tem um login no GUJ, mas tem medo de postar, porque eu não sou muito paciente e logo mando ler o Javadoc :stuck_out_tongue: - é claro que para ele é mais fácil me perguntar direto.

Criado 22 de agosto de 2008
Ultima resposta 25 de ago. de 2008
Respostas 7
Participantes 3