Disons que vous avez 2 nombres, pour chaque opération mathématique typique est-il possible de prédire (sans surcharge significative) si ces opérations résulteraient en un débordement du type auquel ces nombres sont actuellement représentés?Est-il possible de prédire si une opération mathématique entraînerait un débordement?
Répondre
Oui.
Supposons que le dépassement se produise à 100, par souci de simplicité.
a * b >= 100
, nous avons trop-plein
Par conséquent, pour a = n
, si b >= 100/n
, nous avons trop-plein. Si a
ou b
est 0, vous n'avez pas de débordement.
Cela ne fonctionnera pas pour toute configuration mathématique qui doit augmenter la constante de droite, car votre détection de débordement débordera. Cependant, n'importe quelle étape d'une opération peut déborder, donc vous devez vraiment vérifier chaque addition et multiplication avant qu'elle n'arrive au niveau de la machine, plutôt que le niveau de l'algorithme. Ergo, vous aurez besoin de partitionner votre problème dans les plus petites quantités connues pour utiliser efficacement cette détection de débordement.
Je préférerais laisser la langue lancer une exception, mais c'est juste moi.
Activez la protection anti-débordement, puis appliquez l'opération. Si une exception de débordement est levée, ou si un registre d'erreurs obtient un bit de débordement, ou si votre environnement vous informe du problème, vous savez que si vous le faites à nouveau, vous aurez un débordement.
Toutes les machines ne possèdent pas cette fonctionnalité. –
Pour somme:
MAX_NUMBER - A < B
il y aura un débordement
Si A est négatif alors vous aurez un débordement dans votre test –
@Paul R Vous avez raison, il est nécessaire de vérifier si A> 0. Et de vérifier si les deux sont négatifs si débordent le MIN_NUMBER. –
- 1. Est-il possible de vérifier si une mise à jour SVN entraînerait un conflit?
- 2. Débordement mathématique - Manipulation de grands nombres
- 3. opération arithmétique a entraîné un débordement
- 4. Xceed -> opération arithmétique a entraîné un débordement
- 5. Opération arithmétique a entraîné un débordement avec Lucene.Net 2.4
- 6. "opération arithmétique conduit à débordement" dans Me.Invoke avec multithreading
- 7. Comment puis-je effectuer une opération mathématique comme cos et sin dans Javascript ou jQuery?
- 8. Prédire zéro à l'octet
- 9. Est-il possible d'exécuter une opération de api de savon php dans un navigateur web
- 10. Détecter si le débordement entre en jeu sur un élément
- 11. Verrouiller un objet dans une opération asynchrone
- 12. Fonction PLG/SQL AVG avec VS2008 causant "opération arithmétique a entraîné un débordement"
- 13. prédire la sortie
- 14. Calcul de l'aire sous une fonction mathématique
- 15. Prédire combien de données seront poussées dans une poussée git
- 16. Effectuer une opération vectorielle
- 17. Prédire <Bool>, inutile ou utile?
- 18. problème mathématique
- 19. Une aide mathématique plus simple à bash!
- 20. prédire efficacement la probabilité d'un utilisateur de cliquer sur un lien hypertexte
- 21. Prédire la longueur d'une chaîne cryptée
- 22. En C#, comment gérer les types Oracle Float? erreur de réception « opération arithmétique a donné lieu à un débordement »
- 23. Une application mathématique peut-elle provoquer un plantage?
- 24. Comment gérer un débordement de flotteur?
- 25. Infini mathématique express en C#
- 26. Traduire une chaîne binaire en expression mathématique
- 27. Comment puis-je vérifier les conditions de débordement et de débordement numériques dans Perl?
- 28. Retour avec une autre question mathématique
- 29. Prédire les paquets vocaux (speex/ilbc C++)
- 30. PHP: calculer une fonction mathématique f (x) dans une chaîne
Il est probablement moins cher à la fin de la journée pour laisser la langue, sauf (dans des circonstances exceptionnelles) que de sauter à travers des cerceaux en essayant de couvrir tous les cas qui pourraient déborder, aussi bien. –
Malheureusement, les anciennes langues ne prennent pas cette route, et heureusement, les plus récentes n'ont tout simplement pas ce problème, sauf si vous manquez de mémoire: P –
"Sauf si vous manquez de mémoire" est-ce exact? Des exceptions de débordement se produisent lorsqu'une opération arithmétique produit un résultat en dehors de la plage du type de données renvoyé par l'opération. –