#asp.net #vb.net
#asp.net #vb.net
Вопрос:
Я делаю asp.net веб-страница с использованием VB.Net, который вычисляет годовую зарплату сотрудника.
У меня есть GridView, который отображает столбец со значениями типа double (они двойные в базе данных «пример: 66 556,91»).
Я хочу округлить значения этого столбца так, чтобы у меня было 66 557 вместо 66 556,91. Я проверил msdn и использовал {0:D}
и {0:F0}
в DataFormatString в gridview для редактирования столбцов, но значение не было изменено.
<asp:BoundField DataField="C1" HeaderText="calculated taxes" ReadOnly="True" SortExpression="C1" DataFormatString="{0:F0}" />
Что вы предлагаете?
Комментарии:
1. Данные извлекаются из базы данных?
2. Да, данные извлекаются из базы данных MySQL @JaydipJ
Ответ №1:
Обновил вашу команду выбора следующим образом для столбца зарплаты, это выполнит операцию округления в конце базы данных.
SELECT ROUND(SalaryColumnName,0)
Комментарии:
1. Я надеялся не использовать это, поскольку мой оператор sql довольно сложный, но время было не на моей стороне. Это сработало, спасибо!
Ответ №2:
Вы можете указать DataFormatString в вашем определении boundcolumn {0:f0}, которое будет округлять ваши значения до 0 знаков после запятой.
Входные значения
1
2.2
3.323
66556.91
Форматированные значения
1
2
3
66557
Комментарии:
1. Я видел это, к сожалению, это не сработало, когда оно должно было работать
2. Вы точно уверены, что ваши исходные данные относятся к десятичному типу данных? Я запустил {0:f0} dataformatstring через тестовое веб-приложение, и оно сработало, как описано.
3. Извините, должен был упомянуть, что мой источник имеет двойной тип, а не десятичный, теперь это имеет смысл
Ответ №3:
Module Module1
Sub Main()
' Call Math.Round on this Double.
Dim before As Double = 123.45
Dim after1 As Double = Math.Round(before, 1, MidpointRounding.AwayFromZero)
Dim after2 As Double = Math.Round(before, 1, MidpointRounding.ToEven)
Dim after3 As Double = Math.Round(before)
Console.WriteLine(before)
Console.WriteLine(after1)
Console.WriteLine(after2)
Console.WriteLine(after3)
Console.WriteLine()
' Use on this Decimal.
Dim before2 As Decimal = 125.101
Dim after4 As Decimal = Math.Round(before2)
Dim after5 As Decimal = Math.Round(before2, 1)
Console.WriteLine(before2)
Console.WriteLine(after4)
Console.WriteLine(after5)
End Sub
End Module
Output
123.45
123.5
123.4
123
125.101
125
125.1