Ola, preciso muto saber como lidar com dinheiro em uma aplicaçao java, pra fazer os calculos eu uso o BigDecimal oque me mata é que eu nao sei como lidar com os centavos ex.: vou solicitar o salario de uma pessoa ai ela inseri no campo: 880.00, ate ai blz o problema é quando passa de mil, tipo 1.520,90 ou 12.759,35. Como eu faço pra obter esses valores e por o ponto e vírgula nos lugares corretos e calcular? no BigDecimal eu tentei passar 12.550,00+12.550,00 e deu erro, eu tenho que remover a virgula e calcular os centavos separados ? aos que se disporem a ajudar, por favor, usem exemplos claros, linguagem simples e de preferencia com codigo. bgd.
Usa float fera.
funcionou mesmo fiz o calculo com float com reais e centavos e a saida foi essa:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (1 > 0) {
System.out.println("insira um valor ");
float valor = input.nextFloat();
System.out.println("insira outro valor ");
float valor1 = input.nextFloat();
BigDecimal bg = new BigDecimal(valor+"").add(new BigDecimal(valor1+""));
System.out.println("resultado: "+bg);
}
insira um valor
10.000,50
insira outro valor
10.000,50
resultado: 20001.0
mais pelo que eu vi para valores monetarios é melhor somar com BigDecimal porem o recomendado para esse caso é passa uma String com o valor pode me dizer se esta correto o meu codigo? e tambem como faço pra por o ponto de volta no lugar, tipo se tem algum padrao EX.: 999.999,99 nesse caso sao 8 digitos na casa do milhar entao enquanto for 8 digitos o ponto vai entre o 3 e 4 digito e a virgula entre a 6 e a 7, e por ai vai com 999,99 e 99,99 e etc… estou correto ? vlw a força
public static void main (String[] args) {
String valor1 = "12.550,00";
String valor2 = "12.550,00";
BigDecimal v1 = new BigDecimal(valor1.replaceAll("\\.", "").replace(",","."));
BigDecimal v2 = new BigDecimal(valor2.replaceAll("\\.", "").replace(",","."));
v1 = v2.add(v1);
DecimalFormat df = new DecimalFormat("###,##0.00");
System.out.println(df.format(v1));
}
ola Vonquelbe_Cruz vlw msm mano seu codigo é perfieto! pode explicar o funcionamento? obg.
Então cara … replaceAll converte todos os “.” em “”, então fica assim: “12550,00”
e depois mudo a virgula “,”, pra ponto “.” ficando assim: “12550.00”, desta forma não da erro no BigDecimal.
E pra exibir no formato correto, uso o DecimalFormat que é uma mascara onde “###.##” é a quantidade de digitos que quero exibir. OBS: Cuidado com valores muito grandes.
O “0.00” força as duas casas decimais.
Espero ter ajudado
Ajudou de mais. muito obrigado.