If you use the decimal() data type and specify (for example) decimal(16,2), all your amounts will be stored in cents all the time. Round will occur in the calculations but be stored in cents. If you need higher accuracy, you can use decimal(18,4) in your data base and caluclations, then round when you select the data.
select myAmount = cast(myAmount as decimal(16,2))
and use this as your input to your application.