我正在研究转换率的等式。我目前的问题是我不确定我是否得到了正确的结果。
在创建GC_ConversionRateModel
时的Linq查询中,我将TotalOrders
与Visitors
分开以获得转化。为了在Google Charts中获得流畅的结果,我必须使用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
答案 0 :(得分:0)
由于第一个舍入行,代码的第二个舍入行永远不会有用:一旦舍入到四个小数位,数字将如下所示:
##.####00000
当你乘以100时,小数点会向右移动两个位置,所以数字看起来像这样:
####.##00000
请注意,该数字正好有两位小数,因此调用
conv.ConversionRate = Math.Round(conv.ConversionRate, 2, MidpointRounding.ToEven);
没有效果。
您可以安全地将三行转换替换为:
conv.ConversionRate = Math.Round(100*conv.ConversionRate, 2, MidpointRounding.ToEven);