Pessoal, desculpem pela pergunta tola, mas estou tentando fazer uma coisa assim:
if(varDouble1 != varDouble2){
}else(){
}
Mas mesmo os valores caindo iguais entra no if da diferença. Tem algum problema comparar 2 double?
Pessoal, desculpem pela pergunta tola, mas estou tentando fazer uma coisa assim:
if(varDouble1 != varDouble2){
}else(){
}
Mas mesmo os valores caindo iguais entra no if da diferença. Tem algum problema comparar 2 double?
Tem. Doubles são aproximações a maior parte do tempo. Se você quer precisão, use BigDecimal.
NUNCA use == ou != para comparar valores do tipo double ou float. Como nosso amigo mister__m disse, doubles e float são aproximaçòes. Você pode achar q está comparando valores iguais, por exemplo, mas o valor lá da trocentésima casa pode ser diferente entre os dois números e ai, já era sua comparação.
Se vc quer precisão realmente seria bom vc usar BigDecimal. Agora, se vc quer precisão dentro de uma certa tolerância apenas e não quer usar BigDecimal por qualquer razão, pode fazer algo do tipo:
public static final double TOLERANCE = 0.000001; //por exemplo, uma precisão de 1 milhonésimo
...
if(Math.abs(double_1 - double_2) > TOLERANCE) {
//seus doubles são diferentes!
}
Bele. Vou testar aqui. Valeu.