How to get NaN when I divide by zero

后端 未结 5 631
北海茫月
北海茫月 2020-12-08 08:54

When I do floating point division in Python, if I divide by zero, I get an exception:

>>> 1.0/0.0
Traceback (most recent call last):
  File \"

        
相关标签:
5条回答
  • 2020-12-08 09:32

    Method 1:

    try:
        value = a/b
    except ZeroDivisionError:
        value = float('Inf')
    

    Method 2:

    if b != 0:
        value = a / b
    else:
        value = float('Inf')
    

    But be aware that the value could as well be -Inf, so you should make a more distinctive test. Nevertheless, this above should give you the idea how to do it.

    0 讨论(0)
  • 2020-12-08 09:38

    If i understand your problem properly then this should be the solution:

    try:
       1.0/0.0
    except:    
       return 'inf'
    

    you can modified it according to various python exception handling method available

    0 讨论(0)
  • 2020-12-08 09:42

    You could try using the 'decimal' module:

    >>> from decimal import *
    >>> setcontext(ExtendedContext)
    >>> inf = Decimal(1) / Decimal(0)
    >>> print(inf)
    Infinity
    >>> neginf = Decimal(-1) / Decimal(0)
    >>> print(neginf)
    -Infinity
    >>> print(neginf + inf)
    NaN
    >>> print(neginf * inf)
    -Infinity
    >>> print(dig / 0)
    Infinity
    
    0 讨论(0)
  • 2020-12-08 09:42

    I used a wrapper function in a python program of mine for a simple division that was returning ZeroDivisionError when the sensors I was using weren't plugged in. It simply returns 0 (zero), which in real-world terms is what I wanted. Probably gets messy with more variables, however...

    def calculation(a, b):
        if a == 0:
            return 0
        elif b == 0:
            return 0
        else:
            return a/b
    
    0 讨论(0)
  • 2020-12-08 09:49

    The easiest way to get this behaviour is to use numpy.float64 instead of Python default float type:

    >>> import numpy
    >>> numpy.float64(1.0) / 0.0
    inf
    

    Of course this requires NumPy. You can use numpy.seterr() to fine-tune the error handling.

    0 讨论(0)
提交回复
热议问题