DataBinder.Eval到带小数点并且不舍入的小数点后两位

时间:2018-09-12 10:58:13

标签: c# data-binding

  

我如何不舍入Eval值并用美元符号最多显示两位小数?

我尝试过{0:C},但它向68444.9976返回了$68445.00,我要价$ 68444.99。

<%#DataBinder.Eval(Container.DataItem, "Total")%>

1 个答案:

答案 0 :(得分:0)

您可以在* .aspx.cs文件中编写这样的方法:

protected decimal MyCurrencyFormat(object item, string field)
{
    var value = Convert.ToDecimal(((DataRowView)item)[field]);
    var d1 = decimal.Truncate(value);
    var d2 = value - d1;
    if (d2 == 0) return value;

    var s1 = d2.ToString();
    var s2 = "";

    for (int i = 2; i < s1.Length; i++)
    {
        s2 += s1[i];
        if (s2.Length >= 2) break;
    }

    if (s2.Length == 1)
        return d1 + (decimal.Parse(s2) / 10);
    return d1 + (decimal.Parse(s2) / 100);
}

然后从* .aspx文件中调用它:

<%#DataBinder.Eval(MyCurrencyFormat(Container.DataItem, "Total"))%>
相关问题