Question

Je ne suis pas un mathématicien, mais je suppose que diviser par l'infini est soit un mauvais calcul, soit, du moins, peu pratique.

Je viens de passer une demi-heure à déboguer mon code javascript qui fonctionnait parfaitement dans Firefox, mais me renvoyait une erreur dans IE. J'ai finalement réalisé que c'était parce que dans certains scénarios, je demandais à IE de diviser par l'infini.

Donc, j'ai résolu ça, mais je suis curieux de savoir pourquoi Firefox était d'accord avec ça. Certes, cela pourrait être plus une question de mathématiques que de programmation. ;)

Était-ce utile?

La solution

Je pense que c'est un bug dans IE. Selon les règles des mathématiques IEEE, n / Inf = 0 (pour n! = 0). Donc, si IE crisse dessus, c'est un problème dans IE. En revanche, utiliser Inf dans des opérations mathématiques ordinaires pose problème, et il serait préférable que votre code ne l’utilise pas en premier lieu.

Pourquoi est-ce dangereux? Eh bien, pour commencer, selon IEEE 754:

1/0 = Inf
1/-0 = -Inf

mais nous savons que 0 = -0, d’où

Inf = -Inf

ce qui est évidemment indésirable. IEEE n’a de toute façon pas voulu faire d’Inf un numéro ordinaire. Inf et NaN existent pour créer des arithmétiques à virgule flottante dans les ordinateurs avec une précision inhérente et des problèmes de débordement semblables à ceux des arithmétiques ordinaires, où, pour prendre l’exemple le plus simple, l’ensemble des nombres réels est fermé en plus un autre nombre réel). Si vous faites cela avec des flottants de précision finie, vous obtiendrez des cas où l'ajout de deux nombres entraîne un débordement. Pour éviter de considérer cela comme une condition d'erreur, IEEE a introduit deux symboles supplémentaires, Inf et NaN, ainsi qu'un ensemble de règles pour leur comportement. Maintenant, le résultat d’une opération mathématique est toujours un nombre, ou Inf, ou NaN, et le résultat, qu’il ait un sens ou non, est laissé à l’utilisateur.

Autres conseils

Diviser par l'infini, c'est bien - c'est zéro.

Sauf si vous divisez l'infini par l'infini, ce qui est indéfini (en général du moins)

Diviser un nombre par l’infini est parfaitement raisonnable d’un point de vue mathématique. C’est un nombre infiniment proche de zéro, sans atteindre réellement zéro.

Du point de vue logiciel, cela est beaucoup plus difficile, car l’infini n’est pas une valeur pouvant être représentée discrètement. Je suppose que votre différence de comportement est basée sur des décisions de conception.

Dans Firefox, ils ont probablement choisi de renvoyer une valeur de zéro car, à toutes fins pratiques, ce résultat fonctionnera selon vos besoins.

Dans IE, en revanche, il apparaît que les développeurs ont pris la décision consciente de ne pas vous permettre d’effectuer un calcul pour lequel ils savaient ne pas pouvoir donner de réponse discrète.

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