doble - python float()
¿Valores flotantes de precisión doble en Python? (5)
Aquí está mi solución. Primero creo números aleatorios con random.uniform, los formateamos en string con doble precisión y luego los vuelves a convertir en float. Puede ajustar la precisión cambiando ''.2f'' a ''.3f'' etc.
import random
from decimal import Decimal
GndSpeedHigh = float(format(Decimal(random.uniform(5, 25)), ''.2f''))
GndSpeedLow = float(format(Decimal(random.uniform(2, GndSpeedHigh)), ''.2f''))
GndSpeedMean = float(Decimal(format(GndSpeedHigh + GndSpeedLow) / 2, ''.2f'')))
print(GndSpeedMean)
¿Hay tipos de datos con mejor precisión que flotante?
El tipo de float
incorporado de Python tiene doble precisión (es un double
C en CPython, un double
Java en Jython). Si necesita más precisión, obtenga NumPy y use su numpy.float128
.
Puede ser que necesites Decimal
>>> from decimal import Decimal
>>> Decimal(2.675)
Decimal(''2.67499999999999982236431605997495353221893310546875'')
- A diferencia del punto flotante binario basado en hardware, el módulo decimal tiene una precisión modificable por el usuario (valor predeterminado en 28 lugares) que puede ser tan grande como sea necesario para un problema determinado.
Si está presionado por las emisiones de rendimiento, eche un vistazo a GMPY