¿Cuál es la mejor manera de emular el punto flotante de precisión simple en python? (¿O en otros formatos de coma flotante para el caso?) ¿Solo usas ctypes?¿Manera correcta de emular punto flotante de precisión simple en python?
Respuesta
Si su aplicación se adapte a matrices/matrices, puede utilizar numpy con float32
Si numpy
(la excelente sugerencia de otras respuestas) no es aplicable para usted (por ejemplo, porque estás en un ambiente que no permite extensiones arbitrarias de terceros), el módulo array en la biblioteca estándar de Python también es correcto: el código de tipo 'f'
le ofrece flotantes de 32 bits. Además de esos y los flotadores de doble precisión (habituales), no hay mucho para "otros formatos de punto flotante": ¿qué tienes en mente? (por ejemplo, gmpy
ofrece el soporte modesto de GMP para flotadores con tamaños de bits arbitrarios mucho más largos, pero es realmente modesto, por ejemplo, no tiene funciones trigonométricas).
¿qué tal ctypes.c_float de la biblioteca estándar?
Es posible utilizar el módulo struct
de Python para truncar un flotador de 64 bits con la precisión de un flotador de 32 bits.
Por ejemplo:
>>> x = 1.1122334455667788
>>> x
1.1122334455667788
>>> struct.unpack('f', struct.pack('f', x))[0]
1.1122334003448486
Para hacer operaciones aritméticas con flotadores única de 32 bits, lo que se necesita para aplicar esta operación de truncamiento al resultado de cada operación aritmética.
- 1. precisión de punto flotante en Visual C++
- 2. Precisión del punto flotante en la matriz Python
- 3. punto flotante de doble precisión en CUDA
- 4. ¿Precisión arbitraria de punto flotante de Python disponible?
- 5. Reducción de rango Precisión pobre para punto flotante de precisión simple
- 6. ¿Qué define la precisión del punto flotante en python?
- 7. SQL establece la precisión de punto flotante
- 8. ¿Limitar la precisión del punto flotante?
- 9. C++ pérdida de precisión en punto flotante: 3015/0.00025298219406977296
- 10. PI y precisión de un número de punto flotante
- 11. Emular el comportamiento de conversión de cadena de punto flotante de Linux en Windows
- 12. ¿Cómo configuro la precisión del punto flotante en Perl?
- 13. ¿Tiene JavaScript precisión de número de punto flotante doble?
- 14. ¿Diseño adecuado del código C que maneja punto flotante de precisión simple y doble?
- 15. ¿Puede la precisión de punto flotante ser dependiente del hilo?
- 16. Formato de punto flotante Sphinx
- 17. Comparación de punto flotante irreproducibilidad
- 18. ¿Manera correcta de manejar excepciones en Python?
- 19. Convertir bytes en números de coma flotante en Python
- 20. Comprensión de los problemas de punto flotante
- 21. Límites de punto flotante
- 22. Mantenimiento de precisión de punto flotante con un promedio en ejecución
- 23. flotante de impresión, preservando la precisión
- 24. ¿Hay un sufijo literal en punto flotante en C++ para hacer un número doble de precisión?
- 25. "Medio redondeado" en valores de punto flotante
- 26. Comparando los valores de punto flotante
- 27. Codificación de punto flotante crudo
- 28. Rubí matemáticas de punto flotante - Problema con precisión en Suma Calc
- 29. Conversión de punto flotante a punto fijo
- 30. operaciones matemáticas de precisión simple en .NET?
¿Qué quiere decir con "emular"? ¿Lees flotantes de blobs binarios? ¿Ejecuta las matemáticas con precisión simple y obtiene los mismos resultados que otro idioma? (Si es este último, tenga en cuenta que las matemáticas "flotantes" en C en x86 se evalúan en realidad en 80 bits y se reducen a 32 bits cuando se almacenan). –