Pregunta

Tal vez este es el tipo equivocado de pregunta que hacer aquí, pero tengo curiosidad. Sé que muchos idiomas simplemente explotar y fallar cuando se le preguntó a dividir por 0, pero ¿hay alguna lenguajes de programación que pueden manejar de forma inteligente esta suma imposible - y si es así, ¿qué es lo que hacen? ¿Mantienen el procesamiento, el tratamiento 350/0 como 350, o la ejecución de parada, o qué?

¿Fue útil?

Solución

Wikipedia :

Los infinitos de la recta real extendida se puede representar en IEEE tipos de datos de puntos, al igual que los valores de punto flotante común como flotante 1, 1.5, etc. No son valores de error de cualquier manera, aunque a menudo son (pero no siempre, ya que depende del redondeo) utilizados como valores de sustitución cuando hay un desbordamiento. Tras una división por cero excepción, un infinito positivo o negativo se devuelve como un resultado exacto.

Otros consejos

El lenguaje de programación Java poco conocido da la Double.POSITIVE_INFINITY especial constante o Double.NEGATIVE_INFINITY (dependiendo del numerador) cuando se divide por cero en un contexto de punto flotante IEEE. La división entera por cero no está definida, y da como resultado una ArithmeticException ser arrojado, el cual es muy diferente de su escenario de "explosión y el fracaso".

El INTERCAL rendimientos de la biblioteca estándar #0 de división por cero

En Java, la división por cero en un contexto de punto flotante produce el valor especial Double.POSITIVE_INFINITY o Double.NEGATIVE_INFINITY.

Me sorprendería si cualquier idioma devuelve 350 si lo hace 350/0. Sólo dos ejemplos de Java, pero se produce una excepción que puede ser capturado. C / C ++ simplemente se bloquea (creo que lanza una señal de que probablemente puede ser capturado).

En Delphi, ya sea lanzar un error de tiempo de compilación (si dividido por una const valor 0) o un error de ejecución capturable si sucede en tiempo de ejecución.

Es lo mismo para C y C ++.

En PHP obtendrá una advertencia:

  

Advertencia: La división por cero en    en la línea X

Por lo tanto, en PHP, para algo como:

$i = 123 / 0;

$ i se ajustará a nada. y $ i no es NULL y === isset ($ i) devuelve verdadero y is_string ($ i) devuelve falso.

Python (al menos la versión 2, no tengo 3) arroja una ZeroDivisionError, que puede ser capturado.

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

imprime:

42
Trying to divide by 0!

números de punto flotante de acuerdo con el IEEE definen constantes NaN etc. Cualquier operación continua implica thst valor permanecerá sin cambios hasta el final. Números enteros o integrales son diferentes con excepciones que son lanzadas en Java ... ...

Estoy trabajando con poliedros y tratando de elegir un idioma que le gusta inf. Los bordes totales para un poliedro {a, b} donde a es bordes por polígono y b es bordes por esquina es E = 1 / (1 / a + 1 / b - 1/2)

si E es negativa es una curvatura negativa, pero si E es infinito (1/0) teja del avión. Ejemplos: {3,6} {4,4}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top