float doble decimals aproximar python types precision

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 .


Para algunas aplicaciones, puede usar Fraction lugar de números de coma flotante.

>>> from fractions import Fraction >>> Fraction(1, 3**54) Fraction(1, 58149737003040059690390169)

(Para otras aplicaciones, hay un decimal , como lo sugieren las otras respuestas).


Puede ser que necesites Decimal

>>> from decimal import Decimal >>> Decimal(2.675) Decimal(''2.67499999999999982236431605997495353221893310546875'')

Aritmética de punto flotante


Tipo de datos decimales

  • 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