Eventuali duplicati:
How to resolve a Java Rounding Double issueCome confrontare due valori doppi in Java?
Un semplice confronto tra due valori doppi in Java crea qualche problema. Consideriamo il seguente frammento di codice semplice in 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));
}
}
Il codice sopra appare restituire true
, la valutazione dell'espressione ((a-b)==1.0)
ma non lo fa. Restituisce false
invece perché la valutazione di questa espressione è 0.9999999999999999
che in realtà era prevista per 1.0
che non è uguale a 1.0
quindi, la condizione restituisce booleano false
. Qual è il modo migliore e suggerito per superare una situazione del genere?
Questo perché double e float non possono esprimere ogni valore numerico. Stanno davvero usando le approssimazioni per rappresentare il valore. – onit