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
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
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.
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 …
Com certeza… é horrível pra leigo… afff tenebroso!!
Olha só… conheço uma ÓTIMA!! Visual Basic… 
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:
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.
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 ;
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
Nossa, nao acredito que li isso… quanta baboseira…
Rafael
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