0
    @foreach (var item in ViewBag.OrgTable.Rows)
    {
       @foreach (var p in (List<MvcProject.Models.orgModel>)ViewBag.params)
        { 

          decimal temp = Math.Round(item[p.Abbreviation], (int)p.Count);
          @(temp)

         }
    }

使用上面的代码行给了我下面的错误 -

'System.Math.Round(double, int)' 的最佳重载方法匹配有一些无效参数

在上面,Abbreviation 是一个字符串,Count 是一个小数。我不确定上述 System.Math.Round(double,int) 用法有什么问题

4

3 回答 3

2

试试double.Parse(abbreviation)。它需要显式转换为双精度。

于 2013-06-24T20:12:33.193 回答
2

Abbreviation 是一个字符串,Count 是一个小数。我不确定上述 System.Math.Round(double,int) 用法有什么问题

你刚刚回答了你自己的问题。该方法需要一个 double 和一个 int,而您正试图给它一个字符串和一个小数。您将不得不转换这些类型,例如通过调用 double.Parse(p.Abbreviation) 将字符串转换为双精度。

于 2013-06-24T20:14:43.127 回答
2

如果item是 a DataRow,那么以下应该有效:

Math.Round((double)item[p.Abbreviation], (int)p.Count);
于 2013-06-24T20:19:29.213 回答