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

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

5 Solutions collect form web for “Плавные значения с двойной точностью в Python?”

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

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

Если вы нажали на результаты работы, взгляните на GMPY

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

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

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

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

Возможно, вам понадобится Decimal

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

Арифметика с плавающей точкой

Вот мое решение. Сначала я создаю случайные числа с 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) 
  • Арифметика высокой точности в Python и / или C / C ++?
  • Экспоненциальность больших отрицательных чисел
  • Как работает Rounding in Python?
  • Python - лучший язык программирования в мире.