Если вы хотите, чтобы a = 1.00001
и b = 0.99999
были идентифицированы как равные:
return Math.abs(a - b) < 1e-4;
В противном случае, если вы хотите, чтобы a = 1.00010
и b = 1.00019
были идентифицированы как равные, и оба значения a
и b
являются положительными и не огромными:
return Math.floor(a * 10000) == Math.floor(b * 10000);
// compare by == is fine here because both sides are integral values.
// double can represent integral values below 2**53 exactly.
В противном случае используйте метод truncate
, как показано в Есть ли какие-либо функции для усечения двойного числа в java? :
BigDecimal aa = new BigDecimal(a);
BigDecimal bb = new BigDecimal(b);
aa = aa.setScale(4, BigDecimal.ROUND_DOWN);
bb = bb.setScale(4, BigDecimal.ROUND_DOWN);
return aa.equals(bb);