在我的剃刀视图中,我使用以下代码将模型值“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?
答案 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;