将MVC ViewBag变量舍入到2位小数

时间:2013-05-20 13:05:38

标签: asp.net-mvc rounding viewbag

我将2个不同的字段保存在数据库中作为资金:Balance&量。但是,当我尝试在mvc视图上显示这些时,余额已经四舍五入为2DP,而金额显示为4dp。

 @foreach (var trans in ViewBag.Transactions)
{
    <tr>
        <td>
            @trans.Date
        </td>
        <td>
            @trans.Details
        </td>
        <td>
            @trans.Currency
        </td>
        @if (trans.AccountTo == ViewBag.SelectedAccount)
        {
            <td>
               + @trans.Amount
            </td>
            <td>

            </td>
            <td>
                @trans.AccountFrom
            </td>

我已经尝试过@ trans.Amount.ToString(“#。##”)或创建一个与此类似的帮助:http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx 但仍然没有奏效。我怎样才能将它舍入为2dp?

1 个答案:

答案 0 :(得分:2)

执行自定义字符串格式设置时,使用#0作为占位符之间存在明显差异。

原始十进制为4位小数,使用两个占位符中的任意一个,0或#,只需要2位小数就可以使用:

// numeric real literal to be treated as decimal with m or M suffix
decimal d = 100.1255M; 

string s1 = d.ToString( "#.##" ); // 100.13
string s2 = d.ToString( "0.00" ); // 100.13

但是,如果你想要5个小数位,那么差异变得明显:

decimal d = 100.1255m;

string s1 = d.ToString( "#.##" ); // 100.13
string s2 = d.ToString( "0.00" ); // 100.13
string s3 = d.ToString( "#.#####" ); // 100.1255
string s4 = d.ToString( "0.00000" ); // 100.12550

Custom Numeric Format Strings上查看MSDN将有助于阐明差异:

  

零占位符
将零替换为相应的数字(如果有)   存在;否则,结果字符串中会出现零。

有关详细信息:The "0" Custom Specifier

  

数字占位符
如果存在相应的数字,请替换“#”符号;否则,没有数字出现在   结果字符串。

有关详细信息:The "#" Custom Specifier