Кажется, что приведенный выше код возвращает true вычисление выражения ((a-b)==1.0), но это не так. Вместо этого возвращается false, потому что оценка этого выражения является 0.9999999999999999 которая на самом деле ожидалась, 1.0 которая не равна 1.0 следовательно, условие принимает значение boolean false. Какой наилучший и рекомендуемый способ преодолеть такую ситуацию?
Переведено автоматически
Ответ 1
В принципе, вам не следует проводить точные сравнения, вы должны сделать что-то вроде этого:
doublea=1.000001; doubleb=0.000001; doublec= a-b; if (Math.abs(c-1.0) <= 0.000001) {...}
Ответ 2
Вместо использования double для десятичной арифметики, пожалуйста, используйте java.math.BigDecimal . Это даст ожидаемые результаты.