Простое сравнение двух двойных значений в Java создает некоторые проблемы. Давайте рассмотрим следующий простой фрагмент кода на 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));
}
}
Приведенный выше код, по-видимому, возвращает true
, оценку выражения ((ab)==1.0)
но это не так. Вместо этого он возвращает false
потому что вычисление этого выражения равно 0.9999999999999999
которое фактически ожидалось равным 1.0
что не равно 1.0
следовательно, условие оценивается как логическое false
. Каков наилучший и предлагаемый способ преодоления такой ситуации?