c# - Calculation int to decimal fails -
im working on method calculating conversion rate, problem devide visitors orders , result (whole numbers 84) when divide other way around 0.0.
if devide orders visits calculator result looks this:
0,0118694362017804
however have display result percent should shorten result 00,00 somehow. annyways strange dosn't work both ways , im wondering what's problem?
controller method:
public list<gc_conversionratemodel> getconversionreport(gastatisticslistmodel model) { datetime? startdatevalue = (model.startdate == null) ? null : (datetime?)_datetimehelper.converttoutctime(model.startdate.value, _datetimehelper.currenttimezone); datetime? enddatevalue = (model.enddate == null) ? null : (datetime?)_datetimehelper.converttoutctime(model.enddate.value, _datetimehelper.currenttimezone).adddays(1); list<gavisitorsmodel> visitorslist = getgastatisticsreport(model); list<gc_ordersmodel> orderslist = getorderreport(model); list<gc_conversionratemodel> totalconversions = new list<gc_conversionratemodel>(); orderslist.foreach(o => { totalconversions.add((from v in visitorslist v.date == o.date select new gc_conversionratemodel(o.date, v.visitors / o.totalorders)).firstordefault()); }); return totalconversions; }
these object classes:
gavisitorsmodel:
public class gavisitorsmodel : igavisitorsmodel { public string date { get; set; } public int visitors { get; set; } public gavisitorsmodel(string _date, string _visitors) { date = _date; visitors = _visitors; } }
gcordersmodel:
public class gc_ordersmodel { public string date { get; set; } public int totalorders { get; set; } public int totalproducts {get; set;} public gc_ordersmodel(string _date, int _totalorders, int _totalproducts) { date = _date; totalorders = _totalorders; totalproducts = _totalproducts; } }
gc_conversionratemodel:
public class gc_conversionratemodel { public string date { get; set; } public decimal conversionrate { get; set; } public gc_conversionratemodel(string _date, decimal _conversionrate) { date = _date; conversionrate = _conversionrate; } }
thx
you dividing int int, results in int - meaning lose of precision. want float/double division, cast variables that.
select new gc_conversionratemodel(o.date, (float)v.visitors / (float)o.totalorders)).firstordefault());
Comments
Post a Comment