How different programming languages handle division by 0?

▼魔方 西西 提交于 2019-12-01 06:29:28

From Wikipedia:

The infinities of the extended real number line can be represented in IEEE floating point datatypes, just like ordinary floating point values like 1, 1.5 etc. They are not error values in any way, though they are often (but not always, as it depends on the rounding) used as replacement values when there is an overflow. Upon a divide by zero exception, a positive or negative infinity is returned as an exact result.

Jonathan Feinberg

The little-known Java programming language gives the special constant Double.POSITIVE_INFINITY or Double.NEGATIVE_INFINITY (depending on the numerator) when you divide by zero in an IEEE floating-point context. Integer division by zero is undefined, and results in an ArithmeticException being thrown, which is quite different from your scenario of "explosion and failure".

The INTERCAL standard library returns #0 on divide by zero

In Java, division by zero in a floating-point context produces the special value Double.POSITIVE_INFINITY or Double.NEGATIVE_INFINITY.

i'd be surprised if any language returns 350 if you do 350/0. Just two examples, but Java throws an Exception that can be caught. C/C++ just crashes (i think it throws a Signal that can probably be caught).

In Delphi, it either throw a compile-time error (if divided by a 0 value const) or a catchable runtime error if it happens at runtime.

It's the same for C and C++.

In PHP you will get a warning:

Warning: Division by zero in <file.php> on line X

So, in PHP, for something like:

$i = 123 / 0;

$i will be set to nothing. BUT $i is not === NULL and isset($i) returns true and is_string($i) returns false.

Python (at least version 2, I don't have 3) throws a ZeroDivisionError, which can be caught.

num = 42
try:
    for divisor in (1,0):
        ans = num / divisor
        print ans
except ZeroDivisionError:
    print "Trying to divide by 0!"

prints out:

42
Trying to divide by 0!

Floating point numbers as per the IEEE define constants NaN etc. Any continued operation involving thst value will remain unchanged until the end. Integer or whole numbers are different with exceptions being thrown...In java...

I'm working with polyhedra and trying to choose a language that likes inf. The total edges for a polyhedron {a,b} where a is edges per polygon and b is edges per corner is E = 1/(1/a + 1/b - 1/2)

if E is negative it's a negative curvature, but if E is infinity (1/0) it tiles the plane. Examples: {3,6} {4,4}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!