1

我在数据库中保存了 2 个不同的字段作为货币:余额和金额。但是,当我尝试在 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?

4

1 回答 1

3

#执行自定义字符串格式化时,使用和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

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

零占位符
如果存在 1,则用相应的数字替换零;否则,结果字符串中将出现零。

有关更多详细信息:“0”自定义说明符

数字占位符
如果存在,则将“#”符号替换为相应的数字;否则,结果字符串中不会出现数字。

有关更多详细信息:“#”自定义说明符

于 2013-05-20T19:01:16.990 回答