Problemas com casas decimais

8 respostas
D
O que eu posso fazer para resolver o problema abaixo, sem alterar estas tres linhas ?

double d1= 1.5;

double d2= 2.1;

System.out.println(d1*d2);

Resultado: 3.1500000000000004

8 Respostas

D

Se você quer exibir o resultado com um número fixo de casas decimais, não pode fazer nada.

Será necessário utilizar a classe NumberFormat para realizar a formatação.

D

vc quer dizer que, se eu for utilizar essas funções matemáticas, sempre eu vou ter que me preocupar com truncamento ??? mas que ferramenta mais fraquinha pra leigo … principalmente quando ter que trabalhar com sistema financeiro …

Leandro

Com certeza… é horrível pra leigo… afff tenebroso!!
Olha só… conheço uma ÓTIMA!! Visual Basic… :smiley:

O nome completo é Microsoft Visual Basic, tá na versão .NET, mas você ainda acha o 6.0 que é ainda mais fácil… uma maravilha de ferramenta… :twisted:

C

Olá ddavanco,

Você pode também utilizar a classe BigDecimal para trabalhar com números deste tipo.

A propósito, exatamente porque você acha que isso é “fraquinho para leigos”?

[]s

Carlos H.

D

eu acho que quanto mais amigável for a ferramenta, melhor ela será para uma pessoa que nunca usou … imagina se eu tivesse feito todo o sistema ( aí eu não seria leigo, mas somente imagine ) e por sorte não caísse nestes problemas, então eu teria que preocupar em revisar tudo o que eu fiz …
Neste caso, das casas decimais, o mais fácil é abandonar este tipo double ;

Paulo_Silveira

no java 1.5 vai entrar formatador por string assim como tem em C.

o resultado aparecee com .4 no final por causa do arredondamento de acordo com a IEEE 754

Rafael_Steil

Nossa, nao acredito que li isso… quanta baboseira…

Rafael

G

Algumas pessoas me perguntaram como formatar numeros em Java (por exemplo,
como imprimir o numero 3 com alguns zeros na frente, sem precisar apelar
para a concatenacao de Strings).

Segue abaixo o codigo que faz isso. Observem que o que interessa na historia
toda e’ um “objeto formatador” que possui alguns metodos que retornam uma
String e que recebem um parametro a ser formatado. O resultado da formatacao
(a String) depende do estado do objeto formatador, que pode ser alterado
atraves de metodos especificos. Vamos ao codigo:

public static void main(String[] args) {

// cria um objeto formatador de decimais

DecimalFormat n = new DecimalFormat();

// essa vai ser a variavel a ser formatada
int a = 3;

// este e’ um dos metodos que alteram o estado do
// objeto formatador. No caso, estou informando
// que o numero minimo de digitos de um inteiro
// formatado deve ser 2 (zeros a esquerda
// serao adicionados aos inteiros com menos digitos).
n.setMinimumIntegerDigits(2);

// basta chamar o metodo format do objeto formatador

// para obter uma String, que nada mais e’ do

// que o parametro formatado. No caso, o parametro

// 3 e’ formatado para a String “03”.

System.out.println(n.format(a));

}

E’ apenas isso… existe uma serie de funcionalidades associadas a objetos
formatadores, basta consultar a documentacao da API para mais detalhes.
[]'s

Criado 12 de dezembro de 2002
Ultima resposta 16 de fev. de 2003
Respostas 8
Participantes 7