Двойная точность плавающих значений в Python?
существуют ли типы данных с лучшей точностью, чем float?
5 ответов
- В отличие от аппаратной двоичной с плавающей запятой, десятичный модуль имеет изменяемую пользователем точность (по умолчанию до 28 мест), которая может быть такой большой, как это необходимо для данной проблемы.
Если вы нажаты issuses производительности, посмотрите на GMPY
встроенный Python float
тип имеет двойную точность (это C double
в CPython, Java double
in Jython). Если вам нужно больше точности, сделать включает в себя и использовать его numpy.float128
.
может быть, вам нужно Decimal
>>> from decimal import Decimal
>>> Decimal(2.675)
Decimal('2.67499999999999982236431605997495353221893310546875')
вот мое решение. Сначала я создаю случайные числа со случайными.равномерный, отформатируйте их в строку с двойной точностью, а затем преобразуйте их обратно в float. Вы можете настроить точность, изменив '.2Ф "до".3Ф и так далее..
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)