У меня есть значение smallmoney в db как 25,00, когда я прочитал его в .net decmial, оно стало 25,0000 на asp.net gridview. где это прибавилось к лишним двум цифрам?





Это полностью следствие форматирования - Фактическое значение в базе данных просто 25 в обоих случаях.
Это просто случай точности по умолчанию и отображения различных форматов. Если вы хотите, чтобы данные отображались в определенном формате, лучше четко указать этот формат.
smallmoney и деньги в SQLServer имеют 4 знака точности после десятичной дроби.
Форматирование в SQL, вероятно, не имеет отношения к вашему сценарию, но если вы отформатируете его в SQL, у вас есть несколько вариантов.