Question

Peut-être est le mauvais genre de question à poser ici, mais je suis curieux. Je sais que beaucoup de langues vont tout simplement exploser et échouer lorsqu'on lui a demandé de diviser par 0, mais sont-il des langages de programmation qui peuvent gérer intelligemment cette somme impossible - et si oui, que font-ils? Gardent-ils le traitement, le traitement 350/0 comme 350, ou d'arrêter l'exécution, ou quoi?

Était-ce utile?

La solution

De Wikipedia :

Les infinités de la ligne de nombre réel étendu peut être représenté dans les types de données à virgule flottante IEEE, tout comme les valeurs à virgule flottante ordinaires comme 1, 1,5, etc. Ils ne sont pas des valeurs d'erreur de quelque façon, mais ils sont souvent (mais pas toujours, car elle dépend de l'arrondissement) utilisé comme valeurs de remplacement quand il y a un trop-plein. Sur une division par zéro exception, un débordement positif ou négatif est retourné comme un résultat exact.

Autres conseils

Le peu connu Java langage de programmation donne la Double.POSITIVE_INFINITY constante spéciale ou Double.NEGATIVE_INFINITY (selon le numérateur) quand on divise par zéro dans un contexte IEEE à virgule flottante. La division entière par zéro est indéfini, et se traduit par une ArithmeticException étant jeté, ce qui est tout à fait différent de votre scénario de « l'explosion et de l'échec ».

Je serais surpris si tout retourne la langue 350 si vous le faites 350/0. Juste deux exemples, mais Java renvoie une exception qui peut être pris. C / C ++ juste plante (je pense qu'il jette un signal qui peut probablement être pris).

Dans Delphi, il soit lancer une erreur de compilation (si divisée par une valeur 0 const) ou une erreur d'exécution catchable si cela se produit lors de l'exécution.

Il est de même pour C et C ++.

En PHP, vous obtiendrez un message d'avertissement:

  

Avertissement: La division par zéro    en ligne X

Alors, en PHP, quelque chose comme:

$i = 123 / 0;

je vais $ être mis à rien. et $ i est pas === NULL et isset ($ i) retourne vrai et is_string ($ i) retourne false.

Python (au moins la version 2, je n'ai pas 3) jette un ZeroDivisionError, qui peut être pris.

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

imprime sur:

42
Trying to divide by 0!

nombres à virgule flottante selon les constantes définir IEEE NaN etc. Toute opération continue impliquant la valeur thst restera inchangé jusqu'à la fin. Les nombres entiers ou entiers sont différentes avec des exceptions jetés ... En java ...

Je travaille avec polyèdres et en essayant de choisir une langue qui aime inf. Les bords au total pour un polyèdre {a, b} où est arêtes par polygone et b est bords par coin est E = 1 / (1 / a + 1 / b - 1/2)

si E est négative, elle est une courbure négative, mais si E est infini (1/0) il pave le plan. Exemples: {} {3,6} 4,4

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top