如何在页面上添加不舍入值 asp.net 货币符号

我有十进制类型的折扣总计变量。值在页面后面的代码上设置,加载页面后,值将四舍五入。

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

值 7610.3250D 显示为 £7610.33。我喜欢将其显示为£7610.32或$ 7610.32,具体取决于登录用户。当前的文化设置已经存在,我只担心四舍五入。


红颜莎娜
浏览 76回答 2
2回答

阿波罗的战车

尝试使用MidpointRoundingdecimal value = 7610.3250m;string formattedValue = string.Format("{0:C}", decimal.Round(value, 2, MidpointRounding.ToEven));

撒科打诨

假定属性的下划线数据类型为 System.Decimal,则可以使用它来为该方法提供适当的区域性,以便它可以基于指定的区域性呈现货币符号。DiscountTotalToString// 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){&nbsp; &nbsp; return decimal.Round(value, 2, MidpointRounding.ToEven).ToString("C");}所以你可以做:<%# ((decimal)DataBinder.Eval(Container.DataItem, "DiscountTotal")).ToCurrency() %>
打开App,查看更多内容
随时随地看视频慕课网APP