new BigDecimal(1.41421356237309504880168872420969807856967187537694)
The 1.414...
there is a double literal, so it will be truncated to double precision before the program is even run. You will need to pass it as a string:
new BigDecimal("1.41421356237309504880168872420969807856967187537694")
As for the comparison, you should be able to use something along the lines of:
if(a.subtract(new BigDecimal("1.41421356237309504880168872420969807856967187537694")).abs().scaleByPowerOfTen(50).doubleValue() < 1 || ...