Olá, por que ao executar este comando:
System.out.println(214.[telefone removido]+1.[telefone removido]);
O resultado é esse:
215.00000000019998
Ao invés do resultado correto:
215.[telefone removido]
???
Olá, por que ao executar este comando:
System.out.println(214.[telefone removido]+1.[telefone removido]);
O resultado é esse:
215.00000000019998
Ao invés do resultado correto:
215.[telefone removido]
???
Seguinte… descobri que tenho que usar BigDecimal…
O problema e que agora usando o BigDecimal dessa forma
BigDecimal bd1=new BigDecimal("214.[telefone removido]");
BigDecimal bd2=new BigDecimal("1.[telefone removido]");
bd1.add(bd2);
Ele está retornando o valor 0 !
Como resolvo isso?
Aqui funcionou perfeitamente com BigDecimal:
​BigDecimal bd1=new BigDecimal("214.[telefone removido]");
BigDecimal bd2=new BigDecimal("1.[telefone removido]");
BigDecimal retorno = bd1.add(bd2);
System.out.println( retorno );
​
// output: 215.[telefone removido]
Acho que fiz alguma nhaca antes, testei agora e funcionou…
enfim, pra quem tiver o mesmo problema, use BigDecimal, nesse link tem a explicação do porque:
Para entender pq o Java calcula errado:
Já vi este mesmo problema em um programa em Clipper. E pode ocorrer em qualquer linguagem quando são feitas operações convertendo o número em binário, pela razão explicada pelo Vini no link que ele colocou.
Veja o exemplo abaixo. Não parece que o programa deveria imprimir ok, igual.?
public class Erro{
public static void main(String args[]){
if(0.3 + 0.6 == 0.9){
System.out.println("ok, igual.");
}else{
System.out.println("estranho, diferente.");
}
}
}