如何防止 "possible loss of fraction"?
How can I prevent a "possible loss of fraction"?
使用此代码(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 通常的方法相反,它没有提供修复它的方法(我得到的是灰色扳手,而不是标记代码行的排水沟中的黄色灯泡);那么我需要对此代码进行哪些更改以防止 "possible loss of fraction"?
更新
我使用了 Secret Agent Man #1666620 的代码,并乘以 100 得到诸如 62.5 而不是 0.625 的值,如下所示:
double _percentageOfQtyShipped = 0.0;
if ((frbdcbl.QtyShipped != 0) && (frbdcbl.QtyOrdered != 0))
{
_percentageOfQtyShipped = (frbdcbl.QtyShipped / (double)frbdcbl.QtyOrdered)*100;
}
当你将两个整数相除时,结果也是一个整数,所以你丢掉了分数。然后将生成的整数值分配给您的双精度值。要解决此问题,您需要将其中一个整数转换为双精度数。
_percentageOfQtyShipped = frbdcbl.QtyShipped/(double)frbdcbl.QtyOrdered;
使用此代码(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 通常的方法相反,它没有提供修复它的方法(我得到的是灰色扳手,而不是标记代码行的排水沟中的黄色灯泡);那么我需要对此代码进行哪些更改以防止 "possible loss of fraction"?
更新
我使用了 Secret Agent Man #1666620 的代码,并乘以 100 得到诸如 62.5 而不是 0.625 的值,如下所示:
double _percentageOfQtyShipped = 0.0;
if ((frbdcbl.QtyShipped != 0) && (frbdcbl.QtyOrdered != 0))
{
_percentageOfQtyShipped = (frbdcbl.QtyShipped / (double)frbdcbl.QtyOrdered)*100;
}
当你将两个整数相除时,结果也是一个整数,所以你丢掉了分数。然后将生成的整数值分配给您的双精度值。要解决此问题,您需要将其中一个整数转换为双精度数。
_percentageOfQtyShipped = frbdcbl.QtyShipped/(double)frbdcbl.QtyOrdered;