Простое сравнение двух двойных значений в 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. Каков наилучший и предлагаемый способ преодоления такой ситуации?