Quelle est la meilleure façon d'émuler le virgule flottante à simple précision en python? (Ou d'autres formats à virgule flottante d'ailleurs?) Utilisez simplement ctypes?Manière correcte d'émuler le virgule flottante simple précision en python?
Répondre
Si votre application convient tableaux/matrices, vous pouvez utiliser numpy avec float32
Si numpy
(l'excellente suggestion d'autres réponses) est inapplicable pour vous (par exemple parce que vous êtes dans un environnement qui ne permet pas extensions arbitraires de tiers), le module array dans la bibliothèque standard Python est bien aussi - le code de type 'f'
vous donne des flottants de 32 bits. Outre ceux-ci et les flotteurs à double précision (habituels), il n'y a pas grand-chose pour les "autres formats à virgule flottante" - qu'aviez-vous en tête? (par exemple, gmpy
offre le support modeste de GMP pour les flotteurs avec des tailles de bits arbitraires beaucoup plus longues - mais il est en effet modeste, par exemple, pas de fonctions trigonométriques).
que diriez-vous de ctypes.c_float de la bibliothèque standard?
Il est possible d'utiliser le module struct
de Python pour tronquer un flottant de 64 bits à la précision d'un flottant de 32 bits.
Par exemple:
>>> x = 1.1122334455667788
>>> x
1.1122334455667788
>>> struct.unpack('f', struct.pack('f', x))[0]
1.1122334003448486
Pour faire de l'arithmétique uniquement avec flotteurs 32 bits, vous devez appliquer cette opération de troncature au résultat de chaque opération arithmétique.
- 1. précision à virgule flottante
- 2. précision en virgule flottante dans Visual C++
- 3. Comment arrondir à une certaine précision en virgule flottante?
- 4. Problème avec l'opération de précision en virgule flottante en C
- 5. Comment convertir le format à virgule flottante simple précision IEEE 754 en décimal?
- 6. Conversion flottante rapide en int et précision en virgule flottante sur ARM (iPhone 3GS/4)
- 7. en virgule flottante Limitations
- 8. Php avec précision à virgule flottante - équation complexe = 1
- 9. précision en virgule flottante en rubis sur le modèle des rails de validation
- 10. Éviter l'arithmétique en virgule flottante
- 11. Virgule flottante en forme hexadécimale
- 12. calculs à virgule flottante fixe en Java
- 13. Comment taper une infinité de virgule flottante littérale en python
- 14. Valeurs Flash à virgule flottante et à virgule flottante
- 15. Détection d'arrondi à virgule flottante
- 16. Mathématiques à virgule flottante incorrecte?
- 17. opérations à virgule flottante
- 18. Décimale à virgule flottante
- 19. exception de virgule flottante
- 20. La précision en virgule flottante peut-elle être dépendante du fil?
- 21. Comment définir la précision du nombre à virgule flottante en Perl?
- 22. Pourquoi certains nombres à virgule flottante sont-ils représentés avec précision en C#?
- 23. Est-il possible d'augmenter la précision de l'arithmétique en virgule flottante avec gcc?
- 24. Rspec « devrait changer » avec virgule flottante
- 25. La comparaison des valeurs à virgule flottante
- 26. Arrondi de virgule flottante (en java)
- 27. problème dans l'impression en virgule flottante
- 28. Biaise de la mantisse en virgule flottante
- 29. Représentation numérique à virgule flottante dans Actionscript?
- 30. pile à virgule flottante manutention avec des exceptions en virgule flottante sous tension
Que voulez-vous dire par "émuler"? Lire les flottants à partir de blobs binaires? Exécuter des maths en simple précision et obtenir les mêmes résultats qu'une autre langue? (Si c'est le cas, notez que "float" math dans C sur x86 est réellement évalué dans 80 bits et réduit à 32 bits quand il est stocké.) –