Duplicar posible:
How to resolve a Java Rounding Double issue¿Cómo comparar dos valores dobles en Java?
Una simple comparación de dos valores dobles en Java crea algunos problemas. Consideremos el siguiente fragmento de código simple en Java.
package doublecomparision;
final public class DoubleComparision
{
public static void main(String[] args)
{
double a = 1.000001;
double b = 0.000001;
System.out.println("\n"+((a-b)==1.0));
}
}
El código anterior parece volver true
, la evaluación de la expresión ((a-b)==1.0)
pero no es así. Devuelve false
en su lugar porque la evaluación de esta expresión es 0.9999999999999999
, que en realidad se esperaba que fuera 1.0
, que no es igual a 1.0
, por lo tanto, la condición se evalúa como booleana false
. ¿Cuál es la mejor y más sugerida forma de superar una situación así?
Esto se debe a que los dobles y flotantes no pueden expresar cada valor numérico. Realmente están usando aproximaciones para representar el valor. – onit