Comment la langue dans [X] des formes indéterminées de poignée comme 0 ^ 0?
https://softwareengineering.stackexchange.com/questions/9788
-
16-10-2019 - |
Question
x passe à 0, les limites de x ^ 0 et 0 ^ x aller à 1 et 0, respectivement. Certains disent que la meilleure valeur pour 0 ^ 0 dépend du contexte, d'autres disent que la valeur de 0 ^ 0 doit être 1. Je suis intéressé à savoir ce que vos linguistiques disent implémenteurs. Il ne semble pas y avoir un consensus. Par exemple, dans ActiveState Perl 5.12.0:
C:\>perl -e "print 0**0" 1
Alors que dans Mathematica 6.0:
In[1]:= 0^0 During evaluation of In[1]:= Power::indet: Indeterminate expression 0^0 encountered. >> Out[1]= Indeterminate
Je suis aussi intéressé à connaître votre avis sur la question: Que dois-0 ^ 0 soit? Et si vous avez déjà introduit un bug dans un programme que vous écrivez (ou a eu du mal à déboguer un programme) en raison de la façon dont vos poignées linguistiques des formes indéterminées?
La solution
Selon ce article de Wikipedia,
"La plupart langage de programmation avec une fonction d'alimentation sont mises en œuvre à l'aide de la fonction pow IEEE et donc évaluer 0 ^ 0 à 1. Le plus tard C et les normes C ++ décrivent ce que le comportement normatif. Java mandats standards ce comportement. Le .NET procédé cadre System.Math.Pow traite également 0 ^ 0 comme 1 ».
Autres conseils
Python:
>>> 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 dit:
0 ^ 0 = 1
Delphi a obtenu 2 valeurs flottantes: NaN
et Infinity
. Qui obtiennent retournés en cas de bizarreries.
Mais il ne dispose pas d'une fonction intégrée de exponentiation.
^
est pour les pointeurs, comme dans « hey vous là-bas, je montre que vous! »