舍入双值时的转换问题

时间:2015-05-21 07:22:14

标签: c# asp.net-mvc razor rounding

在我的剃刀视图中,我使用以下代码将模型值“Budget”四舍五入为最接近的整数值。模型值“预算”是foreach (XlBordersIndex borderIndex in new[] { (XlBordersIndex)Constants.xlLeft, (XlBordersIndex)Constants.xlRight, (XlBordersIndex)Constants.xlTop, (XlBordersIndex)Constants.xlBottom }) { style.Borders[borderIndex].LineStyle = XlLineStyle.xlContinuous; } 值。但是,为double? visual studio分配最终值时会出错。

为什么我不能使用roundMyPrice值作为参数?我怎样才能克服这个问题?

double?

2 个答案:

答案 0 :(得分:1)

double?(或Nullable<double>)可以是null,请记住它。

变体1

double? myPrice = budget / count;
double roundMyPrice;
if (myPrice.HasValue)
{
    roundMyPrice = Math.Round(myPrice.Value, MidpointRounding.AwayFromZero);
}
else
{
    // value is not presented
}

变体2

MSDN:GetValueOrDefault

如果您的逻辑null为0,则可以使用以下代码:

double? myPrice = budget / count;
double roundMyPrice = Math.Round(myPrice.GetValueOrDefault(), MidpointRounding.AwayFromZero);

答案 1 :(得分:0)

double?中的Math.Round没有超载,因此您需要传递double作为参数。此外,您需要考虑double?null时的情况。最后,您需要将Math.Round的结果转换为double?

double? budget = item.Budget;
double? myPrice = budget / count;
double? roundMyPrice = myPrice.HasValue ? (double?) Math.Round(myPrice.Value, MidpointRounding.AwayFromZero) : null;