为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
红颜莎娜 2022-08-20 16:20:52
我有十进制类型的折扣总计变量。值在页面后面的代码上设置,加载页面后,值将四舍五入。<%#DataBinder.Eval(Container.DataItem, "DiscountTotal","{0:C}")%>值 7610.3250D 显示为 £7610.33。我喜欢将其显示为£7610.32或$ 7610.32,具体取决于登录用户。当前的文化设置已经存在,我只担心四舍五入。
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

尝试使用MidpointRounding


decimal value = 7610.3250m;

string formattedValue = string.Format("{0:C}", decimal.Round(value, 2, MidpointRounding.ToEven));



查看完整回答
反对 回复 2022-08-20
?
撒科打诨

TA贡献1934条经验 获得超2个赞

假定属性的下划线数据类型为 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)

{

    return decimal.Round(value, 2, MidpointRounding.ToEven).ToString("C");

}

所以你可以做:


<%# ((decimal)DataBinder.Eval(Container.DataItem, "DiscountTotal")).ToCurrency() %>


查看完整回答
反对 回复 2022-08-20
  • 2 回答
  • 0 关注
  • 75 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信