¿Cómo maneja el lenguaje [x] formas indeterminadas como 0^0?
https://softwareengineering.stackexchange.com/questions/9788
-
16-10-2019 - |
Pregunta
A medida que X va a 0, los límites de x^0 y 0^x van a 1 y 0, respectivamente. Algunos dicen que el mejor valor para 0^0 depende del contexto, otros dicen que el valor de 0^0 debería ser 1. Estoy interesado en saber lo que dicen sus implementadores de lenguaje. No parece haber un consenso. Por ejemplo, en activestate perl 5.12.0:
C:\>perl -e "print 0**0" 1
Mientras que en Mathematica 6.0:
In[1]:= 0^0 During evaluation of In[1]:= Power::indet: Indeterminate expression 0^0 encountered. >> Out[1]= Indeterminate
También estoy interesado en conocer su opinión sobre el asunto: ¿Qué debe ser 0^0? ¿Y también si alguna vez ha introducido un error en un programa que estaba escribiendo (o le cuesta depurar un programa) debido a la forma en que su lenguaje maneja formularios indeterminados?
Solución
De acuerdo a este Artículo de Wikipedia,
"La mayoría del lenguaje de programación con una función de potencia se implementan utilizando la función IEEE POW y, por lo tanto, evalúa 0^0 como 1. Los estándares posteriores de C y C ++ describen esto como el comportamiento normativo. El estándar Java exige este comportamiento. El sistema de método de marco .NET. .Math.Pow también trata 0^0 como 1. "
Otros consejos
Pitón:
>>> for t in [int, float, complex, fractions.Fraction, decimal.Decimal]:
... print(t, t(0)**0)
...
<type 'int'> 1
<type 'float'> 1.0
<type 'complex'> (1+0j)
<class 'fractions.Fraction'> 1
Traceback (most recent call last):
...
decimal.InvalidOperation: 0 ** 0
Google dice:
0^0 = 1
Delphi tiene 2 valores flotantes: NaN
y Infinity
. Que se devuelven en caso de rareza.
Pero no tiene una función de exponencia incorporada.
^
es para punteros, como en "¡Hola, estás allí, te estoy señalando!"