Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Also: in javascript you can divide by zero

  > 1/0
  Infinity
But python throws a divide by zero error:

  >>> 1/0
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  ZeroDivisionError: division by zero
Still you do have infinity and nan in python - because these are part of the floating point spec.

  >>> float('inf') - float('inf')
  nan
  >>> float('inf') == float('inf')
  True
  >>> NAN=float('inf') - float('inf')
  >>> NAN == NAN
  False
However that's not mathematics, it's computers (these are even stranger...)

I have my own little programming language - PYX [1] - and i don't allow this madness (even if it is a violation of the floating point spec ;-)

  pyx
  > mathconst.Infinity - mathconst.Infinity
  Error: results in 'not a number' - that's not allowed here
  #(1) mathconst.Infinity - mathconst.Infinity
     |....................^

  > 1/0
  Error: Can't divide by zero
  #(1) 1/0
     |..^
[1] PYX - https://github.com/MoserMichael/jscriptparse - it's supposed to be an educational programming language, where I am trying to have detailed error messages, my side project.


Dividing by 0 or -0 is a valid floating-point operation because there's an infinity in the number system, and JS uses double precision floating point for all numbers. Python has an integer type and a double type, and division by 0 is disallowed for integers, but okay for doubles.


your explanation makes sense, however python doesn't allow division of floating point number by 0 either:

  >>> type(1.0)
  <class 'float'>
  >>> 1.0/0
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  ZeroDivisionError: float division by zero
However numpy lets you do it - it is only a warning

  >>> import numpy as np

  >>>
  >>> np.divide(1.0,0)
  __main__:1: RuntimeWarning: divide by zero encountered in    true_divide
  inf


Wow, Python really does hold your hand.

>>> 1/0.0

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>
ZeroDivisionError: float division by zero

>>> 1.0/0.0

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>
ZeroDivisionError: float division by zero




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: