Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 5 of 5
  1. #1
    Regular Coder
    Join Date
    Jan 2010
    Posts
    101
    Thanks
    17
    Thanked 5 Times in 5 Posts

    Parsing an equation to determine if it will be a division by zero

    I've got a problem on my hands. I've got control of the input to my function, but I don't know what the equation will be. As the numbers that the equation is calculating against are also unknown, there's a possibility of a division by zero. What I'm wondering is if someone knows of a clever way of determining the denominator of an expression before passing it to be evaluated.

    For example, the input could be, but is not limited to:
    • 2*5/4
    • (8-6)/2
    • 8/2/3
    • 8*6
    • 5/0


    etc...

    How can I parse these? RegExp is ok, if required.

  • #2
    Supreme Master coder! Philip M's Avatar
    Join Date
    Jun 2002
    Location
    London, England
    Posts
    17,982
    Thanks
    203
    Thanked 2,536 Times in 2,514 Posts
    I don't think you can detect whether the denominator is zero except by evaluating it as it might be expressed as (5*2/10-1)

    JavaScript does not give an error on division by 0, but you can detect divison by zero resulting in infinity easily enough:-

    Code:
    <script type = "text/javascript">
    
    function divByZero(dividend,divisor) {	
    var quotient=dividend/divisor;       
    if(isNaN(quotient)) return 0; // can be changed to whatever is desired by the programmer to be 0, false, or Infinity 
    if (Math.abs(quotient) === Infinity)   {
    alert ("The result is +- infinity");
    }
     
    return quotient; //Will return Infinity or -Infinity in cases of, for example, 5/0 or -7/0 respectively
    }
    
    alert(divByZero(5,0));
    
    </script>

    The Dutch have a good record against Holland. - Commentator, ITV1
    Last edited by Philip M; 07-04-2012 at 07:41 AM.

    All the code given in this post has been tested and is intended to address the question asked.
    Unless stated otherwise it is not just a demonstration.

  • Users who have thanked Philip M for this post:

    iLochie (07-04-2012)

  • #3
    Regular Coder
    Join Date
    Jan 2010
    Posts
    101
    Thanks
    17
    Thanked 5 Times in 5 Posts
    Quote Originally Posted by Philip M View Post
    I don't think you can detect whether the denominator is zero except by evaluating it as it might be expressed as (5*2/10-1)

    JavaScript does not give an error on division by 0, but you can detect divison by zero resulting in infinity easily enough:-

    Code:
    <script type = "text/javascript">
    
    function divByZero(dividend,divisor) {	
    var quotient=dividend/divisor;       
    if(isNaN(quotient)) return 0; // can be changed to whatever is desired by the programmer to be 0, false, or Infinity 
    if (Math.abs(quotient) === Infinity)   {
    alert ("The result is +- infinity");
    }
     
    return quotient; //Will return Infinity or -Infinity in cases of, for example, 5/0 or -7/0 respectively
    }
    
    alert(divByZero(5,0));
    
    </script>

    The Dutch have a good record against Holland. - Commentator, ITV1
    Thanks for the insight Philip, your comments are always welcomed. I'll try what you've recommended. Now I just have to figure out how to obtain any quotients in the expression..

  • #4
    Supreme Master coder! Philip M's Avatar
    Join Date
    Jun 2002
    Location
    London, England
    Posts
    17,982
    Thanks
    203
    Thanked 2,536 Times in 2,514 Posts
    Quote Originally Posted by iLochie View Post
    Thanks for the insight Philip, your comments are always welcomed. I'll try what you've recommended. Now I just have to figure out how to obtain any quotients in the expression..
    All you have to do is test your equations for division by zero (result = infinity) before proceding to some further calculation.

    All the code given in this post has been tested and is intended to address the question asked.
    Unless stated otherwise it is not just a demonstration.

  • #5
    Master Coder felgall's Avatar
    Join Date
    Sep 2005
    Location
    Sydney, Australia
    Posts
    6,639
    Thanks
    0
    Thanked 649 Times in 639 Posts
    If you want to actually throw an error if an attempt is made to divide by zero (as would happen in most other languages) then immediately after the calculation test if the result is Infinity or NaN and if it is then throw a rangeError.

    All but one possible divide by zero in JavaScript give Infinity as the result - the one exception is 0/0 which gives NaN instead.
    Stephen
    Learn Modern JavaScript - http://javascriptexample.net/
    Helping others to solve their computer problem at http://www.felgall.com/

    Don't forget to start your JavaScript code with "use strict"; which makes it easier to find errors in your code.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •