我正在研究一个转化率方程。我目前的问题是我不确定我是否得到了正确的结果。
在创建GC_ConversionRateModel
时的Linq查询中,我将TotalOrders
与Visitors
分开以获得转换。为了在谷歌图表中获得流畅的结果,我必须使用4位小数,将结果乘以100,最后用2位小数显示结果。(不是十进制数据类型)。
这样做好吗?
OrdersList.ForEach(o =>
{
TotalConversions.Add((from v in VisitorsList
where v.Date == o.Date
select new GC_ConversionRateModel(o.Date, (double)o.TotalOrders / (double)v.Visitors)).FirstOrDefault());
});
foreach (var conv in TotalConversions)
{
conv.ConversionRate = Math.Round(conv.ConversionRate, 4); // -- Round to 4 decimals
conv.ConversionRate = conv.ConversionRate * 100; //-- Multiply with 100
conv.ConversionRate = Math.Round(conv.ConversionRate, 2, MidpointRounding.ToEven); //-- Round to 2 decimals
}
return TotalConversions;
Thx
由于第一条舍入线,代码的第二条舍入线从未做过任何有用的事情:一旦你四舍五入到小数点后四位,数字将如下所示:
##.####00000
当你乘以100时,小数点会向右移动两位,所以数字看起来是这样的:
####.##00000
请注意,该数字正好有两个十进制数字,因此的调用
conv.ConversionRate = Math.Round(conv.ConversionRate, 2, MidpointRounding.ToEven);
没有效果。
您可以安全地将三条转换线替换为一条:
conv.ConversionRate = Math.Round(100*conv.ConversionRate, 2, MidpointRounding.ToEven);