ads = ads.Where(x => (x.Amount - x.Price) / (x.Amount / 100) >= filter.Persent);
if x.Amount == 0 I have error "Divide by zero error encountered."
like me in this request is to avoid?
update:
this helped, but I do not like the decision:
ads = ads.Where(x => (x.Amount - x.Price) / ((x.Amount / 100)==0?0.1:(x.Amount / 100)) >= filter.Persent);
there is another way?
ads = ads.Where(x => x.Amount != 0 &&
(x.Amount - x.Price) / (x.Amount / 100) >= filter.Persent);
Of course, you can always implement a generic safe division method and use it all the way
using System;
namespace Stackoverflow
{
static public class NumericExtensions
{
static public decimal SafeDivision(this decimal Numerator, decimal Denominator)
{
return (Denominator == 0) ? 0 : Numerator / Denominator;
}
}
}
I have chosen decimal type because it addresses all non nullable numeric types that I am aware of.
Usage:
var Numerator = 100;
var Denominator = 0;
var SampleResult1 = NumericExtensions.SafeDivision(Numerator , Denominator );
var SampleResult2 = Numerator.SafeDivision(Denominator);