Question: For Double/Float, there are some rounding errors and loss of precision when converting from decimal to binary representation.
For example, setting float to "6.1" and then printing it out again, you may get a reported value of something like "6.099999904632568359375". 
Which is the better option for checking equality of 2 Double objects :
Using BigDecimal
or
(Math.abs(double1 - double2) < epsilon)

Answer: 
It depends on your usecase. If you work with currency, go for BigDecimal.
Otherwise if you can live with approximations use `Math.abs(double1 - double2) < epsilon`
Floating point numbers have what is called an epsilon tolerance, the minimum representable value. To compare floats check their difference is within tolerance.

```
Math.abs(a-b) <= EPSILON

```

Of course if you happen to be working with a number that is too big to fit in a double, you should use the big number variant.
EPSILON is some tolerance several orders greater than Double.MIN\_VALUE, but sufficiently small that the variance is negligible.