使用此代码(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;
}
答案 0 :(得分:8)
当你划分两个整数时,结果也将是一个整数,所以你就失去了分数。然后将得到的整数值分配给您的double。要解决这个问题,您需要将其中一个int转换为double。
_percentageOfQtyShipped = frbdcbl.QtyShipped/(double)frbdcbl.QtyOrdered;