This week's book giveaways are in the Scala and Android forums. We're giving away four copies each of Machine Learning Systems: Designs that scale and Xamarin in Action: Creating native cross-platform mobile apps and have the authors on-line! See this thread and this one for details.
This is normal behaviour for floating-point aruthmetic. It is like calculating 1/3 = 0.333333333333333333 in decimal, then 1/3 * 3 = 0.999999999999999999 and when you subtract it from 1 you get 0.00000000000000000001. (Or something like that.) There are some numbers which cannot round like that at all, which is why you are getting numbers ending with 0000000001 or 9999999999. That is why you shouldn't use floating point arithmetic for money or as the counter for a for loop.
Suggest what you actually want is to print out the numbers with a particular precision, rather than rounding.
Try the % tags which are described in the API for the Formatter class. There is more about the % tags in the Java Tutorial here. You probably want something like System.out.printf("Number = %6.2f%n", doubleNumber);