如何防止“可能的分数损失”?

时间:2015-12-10 16:49:26

标签: c# resharper fractions

使用此代码(QtyShipped和QtyOrdered是整数,_percentageOfQtyShipped是双倍):

_percentageOfQtyShipped = frbdcbl.QtyShipped / frbdcbl.QtyOrdered;

...我得到了一些“div by 0”错误,所以我重构了它:

double _percentageOfQtyShipped = 0.0;
if ((frbdcbl.QtyShipped != 0) && (frbdcbl.QtyOrdered != 0))
{
    _percentageOfQtyShipped = frbdcbl.QtyShipped/frbdcbl.QtyOrdered;
}

...但现在我收到了来自Resharper的警告,“可能丢失分数

然而,与Resharper通常的方法相反,它没有提供一种方法来修复它(而不是在标记的代码行的阴沟中的黄色灯泡,我得到一个灰色的扳手);那么我需要对此代码进行哪些更改以防止“可能丢失分数”?

更新

我使用了Secret Agent Man#1666620的代码,并乘以100得到62.5而不是0.625的val,如下所示:

double _percentageOfQtyShipped = 0.0;
if ((frbdcbl.QtyShipped != 0) && (frbdcbl.QtyOrdered != 0))
{
    _percentageOfQtyShipped = (frbdcbl.QtyShipped / (double)frbdcbl.QtyOrdered)*100;
}

1 个答案:

答案 0 :(得分:8)

当你划分两个整数时,结果也将是一个整数,所以你就失去了分数。然后将得到的整数值分配给您的double。要解决这个问题,您需要将其中一个int转换为double。

_percentageOfQtyShipped = frbdcbl.QtyShipped/(double)frbdcbl.QtyOrdered;