I remember having this problem when upgrading from Studio 2002/Framework 1.0 to Studio 2003/Framework 1.1. All of a sudden, our decimal types no longer had the trailing zeros removed when populating values from a database.
I'd forgotten how I originally fixed this, so my first attempt this time was
dr.GetDecimal(1).ToString().Trim('0')
Unfortunately, this doesn't work as a 0 value will be effectively set to a zero length string. Further investigation led me to the following site
http://blogs.msdn.com/bclteam/archive/2004/06/01/145468.aspx
The answer is
dr.GetDecimal(1).ToString("G29")