As with most everything, "it depends." It depends on your exact situation and the problem space your program is solving. Your method of doubles and floats for your contrived case looks just fine. However, in the case of money, many people and libraries opt to use integer math only. This nominally minimizes the rounding errors in cases where high precision and high accuracy are paramount. Evaluate for yourself and for your use case what works.
Meanwhile, applying that thought process to your case, you might just use cents and convert only for presentation. Or, better yet, encapsulate the logic in a Currency class and perhaps USD class:
int amountInCents = ....
int amountInDollars = round(amountInCents / 100.0);
Note the use of the explicit decimal to tell the compiler to avoid integer division. The astute will accordingly see the hidden floating point math in this code.