From the [docs](http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#BigDecimal(java.lang.String), "Note: For values other than float and double NaN and ±Infinity, this constructor is compatible with the values returned by Float.toString(float) and Double.toString(double). This is generally the preferred way to convert a float or double into a BigDecimal, as it doesn't suffer from the unpredictability of the BigDecimal(double) constructor." 

So in other words when using `BigDecimal`, if you mean `10000` you should use either  BigDecimal("10000") or  BigDecimal(Double.toString(10000)). Otherwise BigDecimal(10000) will result in a value of 10000.00000000000000000832983481729374 or something like that.