Подтвердить что ты не робот

Плавные значения с двойной точностью в Python?

Существуют ли типы данных с большей точностью, чем float?

4b9b3361

Ответ 1

Десятичный тип данных

  • В отличие от аппаратной бинарной с плавающей запятой, десятичный модуль имеет изменяемую пользователем точность (по умолчанию - 28 мест), которая может быть такой же большой, как требуется для данной проблемы.

Если вы нажали на функции производительности, посмотрите GMPY

Ответ 2

Тип встроенного float Python имеет двойную точность (это C double в CPython, Java double в Jython). Если вам нужна более высокая точность, получите NumPy и используйте его numpy.float128.

Ответ 3

Для некоторых приложений вы можете использовать Fraction вместо чисел с плавающей запятой.

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

(Для других приложений там decimal, как это было предложено другими ответами.)

Ответ 5

Вот мое решение. Сначала я создаю случайные числа с random.uniform, форматируем их в строку с двойной точностью, а затем конвертируем их обратно в float. Вы можете настроить точность, изменив ".2f" на ".3f" и т.д.

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)