Flutuante ou inteiro para tratamento de valores financeiros?

Estive procurando, algo do tipo para tratar valores financeiro e encontro este link

http://www.if.ufrgs.br/~betz/jaulas/aula2.htm

Qual tipo o guj recomendaria para fazer o tratamento? Currency, double ou long?

Agradeço respostas :mrgreen:

O Guj eu não sei…
mas eu usario BigDecimal

Dependendo do tipo de contas a fazer, calcularia tudo em centavos e guardaria em um valor “long”. Tudo depende

Pra vc nao ter dor de cabeca, use BigDecimal.
Senao implemente uma gambiarra pra resolver o problema da aproximacao.

[quote=kina]O Guj eu não sei…
mas eu usario BigDecimal[/quote]

BigDecimal seria flutuante, certo?

No artigo que tinha passado no post anteior o autor condena a utilização do double porque, e não terei escolha, pois preciso usar o Math.pow() para os calculos.

Entendo que cada caso é um caso, é que quando fui fazer o teste do método, aí fiquei nesta dúvida.

Segue o código abaixo:

/**
 * 
 * Calculos de juros em geral
 * 
 * @author Fábio Rodrigues Ribeiro
 * @version 0.3
 * @since JDK 1.5
 * 
 */
public class Financas {

	/**
	 * Cálculo de juros simples
	 * 
	 * @param i
	 *            Taxa ao mês
	 * @param n
	 *            Periodo em dias
	 * @param PV
	 *            Valor Principal
	 * @return Juros
	 */
	public double evJurosSimples(double i, double n, Double PV) {
		return (PV * (Math.pow((1 + (i / 100)), (n / 30)) - 1));
	}
       //continua
}

A classe existe mais métodos, que todos quase a mesma estrutura

Enquanto o teste está na seguinte forma

import junit.framework.TestCase;

public class TestarFinancas extends TestCase {

	public void testFinancas() {
		Financas f = new Financas();
		assertEquals(2730.15, f.evJurosSimples(4.5, 45, 40000));
	}
}

Pois o valor bate, porém o junit acusa.

Bem , se for para um trabalho da universidade pode utilizar double mesmo mas se for em sistemas pequenos tipo lojas , padaria recomendo utilizar float mas se for para valer ( sistemas bancarios , operadoras de cartao ) utilize o BigDecimal ( ja que a precisao e limitada pela quantidade de memoria da maquina )

Eu usaria long e calcularia tudo com base nos centavos. Fica mais fácil usar usar operadores artiméticos.

Como no artigo, dá pra confiar no double? :frowning:

Se fizer tudo na base do centavo, ou seja, no long teria que converter toda a vez que se recupera, e guardar em um BD? :roll:

Estou de olho no BigDecimal :shock: , que funcionalidade ele tem? como o java.lang.Math

O objetivo é fazer um sistema contabil.

O que diria a entrada para o método ser double e a saída ser BigDecimal?

É uma furada?

Até.