Having problems representing money

This is a very amatuerish question, but no matter what I try, there is no flexibility with setprecision when it comes to me wanting just two places beyond the decimal. When I use setprecision(2) and enter a value as 3.75, for instance, I get 3.8. So setprecision goes by the entire numbers' digits, right? And I also have to represent another float, starting at 1000.00, as ongoing funds. If I set the precision at 6, and the funds are less than 1000, it rounds to three digits behind the decimal and I get the same problem I had with the smaller number when the funds are greater than 9999.99. Is there a more flexible standard way to represent money, or will I have to write a rounding script? And if so, I'm new to programming, and am a little lost on how to go about writing one. I'd like to know if there's a standard way to solve this problem, though.