Existe-t-il un moyen standard d'utiliser des entiers de longueur arbitraire en Perl? Je travaille sur du code qui génère des assemblages x64 pour les tests, et j'en ai marre de manipuler 32 bits à la fois. J'utilise Perl 5.10.0, pour ce que ça vaut.Comment puis-je utiliser des entiers de longueur arbitraire en Perl?
Répondre
Si vous voulez seulement utiliser les grands entiers, vous pouvez utiliser le bigint
, que vous pouvez limiter la portée d'un fichier:
use bigint;
ou tout simplement une portée limitée:
{
use bigint;
...;
}
Si vous avez besoin de grands nombres à virgule flottante ainsi que de grands entiers, vous pouvez utiliser le pragma bignum
de la même manière. D'une manière ou d'une autre, cela ralentira légèrement votre programme (ou de manière significative si vous faites beaucoup de maths), donc vous ne devriez les utiliser que pour les parties où vous en avez vraiment besoin. Cependant, plus vite n'est pas mieux que correct. :)
Si vous voulez un contrôle précis sur lesquels les numéros utilisent le calcul big*
, vous pouvez utiliser les classes sous-jacentes qui les mettent en œuvre et de créer vous-même des objets plutôt que d'appliquer la sémantique big*
à tout. Regardez que Math::Big*
modules. Je parle de cela plus dans le chapitre Benchmarking de Mastering Perl puisque les ordinateurs sont trop rapides de nos jours pour utiliser une factorielle comme une fonction lente, et nous avons également ajouté une section sur les grands nombres au prochain Effective Perl Programming, 2nd Edition.
- 1. CLIPS: Affirmer des faits de longueur arbitraire
- 2. URI Codeigniter longueur arbitraire
- 3. Comment factoriser les entiers en utilisant Perl?
- 4. Longueur arbitraire entier dans Ada
- 5. gros entiers de longueur fixe
- 6. Chaîne numérique (taille arbitraire) -> Nombre entiers
- 7. Python regex split, entier de longueur arbitraire
- 8. Comment GMP stocke ses entiers, sur un nombre arbitraire d'octets?
- 9. Comment utiliser `lock_hash_recurse` en Perl?
- 10. Comment utiliser SWIG en Perl?
- 11. partition des entiers
- 12. Comment utiliser sprintf pour remplir zéro à une longueur variable en Perl?
- 13. Comment obtenir la longueur d'une chaîne en Perl?
- 14. sorte radix sur les chaînes binaires de longueur arbitraire
- 15. Comment utiliser la fonction de carte sur des listes imbriquées et convertir des chaînes en entiers?
- 16. Comment utiliser NSRange avec des entiers pour simplifier mon code?
- 17. perl + comment utiliser Chomp en boucle foreach
- 18. Endianness des entiers en Python
- 19. Enregistrer des fichiers entiers en utilisant localStorage
- 20. Comment utiliser la programmation asynchrone en Perl?
- 21. Comment utiliser Ajax avec jQuery en Perl?
- 22. Liste des entiers en chaîne (tableau d'octets) - python
- 23. Une méthode générique pour définir la longueur d'un tableau dynamique de type arbitraire en C++
- 24. Comment convertir des chaînes en entiers en Python?
- 25. Comment convertir des entiers en caractères en C#?
- 26. Comment utiliser perl comme sed?
- 27. Comment trouver uniquement des mots entiers en utilisant re.search?
- 28. Insérer des virgules dans des entiers
- 29. Comment utiliser XSLT pour marquer des nœuds spécifiques avec des ID entiers uniques, séquentiels et croissants?
- 30. Comment utiliser les rappels avec Text :: Perl de Perl?
et éventuellement 'use bigint;' ce qui fait de * tout * littéral numérique dans sa portée un BigInt sans 'Math :: BigInt-> new'. Utilisez avec soin, bien sûr. – hobbs
Ou 'utiliser bignum;', qui étend bigint avec BigFloat. – Anonymous