Use BigDecimal for subtraction to resolve precision issues with double

This is in response to issues such as this, found in the Android Calculator which uses arithmetic:

https://code.google.com/p/android/issues/detail?id=81089&q=calculator&sort=-stars&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars