Как добавить символ валюты без округления значения на странице asp.net - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть переменная DiscountTotal с десятичным типом.Значения устанавливаются в коде за страницей, после загрузки страницы значения округляются.

<%#DataBinder.Eval(Container.DataItem, "DiscountTotal","{0:C}")%>

Значение 7610.3250D отображается как £ 7610.33.Мне нравится, что это будет отображаться как £ 7610,32 или $ 7610,32 в зависимости от пользователя, вошедшего в систему.Текущие настройки культуры уже есть, и я беспокоюсь только о округлении.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Предполагая, что тип данных подчеркивания вашего свойства DiscountTotal - System.Decimal, вы можете использовать его для предоставления соответствующей культуры методу ToString, чтобы он мог отображать символ валюты на основе указанной культуры.

// For $, use en-US instead of en-GB.
// You must make this available in your session.
var sessionUiCulture = new System.Globalization.CultureInfo("en-GB");
...
...
<%# decimal.Round((decimal)DataBinder.Eval(Container.DataItem, "DiscountTotal"), 2, MidpointRounding.ToEven).ToString("C", sessionUiCulture) %>

Кроме того, если вам нужно такое поведение в вашем приложении, лучший способ сделать это - установить для свойства System.Globalization.CultureInfo.CurrentUICulture соответствующую культуру в вашем конвейере запросов, таким образом, у вас этого нет.беспокоиться об этом.

В зависимости от того, по какому маршруту вы идете, вам следует подумать о создании метода расширения для этого:

public static string ToCurrency(this decimal value)
{
    return decimal.Round(value, 2, MidpointRounding.ToEven).ToString("C");
}

Так что вы можете просто сделать:

<%# ((decimal)DataBinder.Eval(Container.DataItem, "DiscountTotal")).ToCurrency() %>
0 голосов
/ 01 февраля 2019

Попробуйте округлить с MidpointRounding

decimal value = 7610.3250m;
string formattedValue = string.Format("{0:C}", decimal.Round(value, 2, MidpointRounding.ToEven));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...