Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to prevent division by zero?

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?

like image 260
Mediator Avatar asked Apr 20 '12 09:04

Mediator


1 Answers

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);
like image 154
Julio Nobre Avatar answered Sep 30 '22 19:09

Julio Nobre