numpy.format_float_positional

numpy.format_float_positional(x, precision=None, unique=True, fractional=True, trim='k', sign=False, pad_left=None, pad_right=None)

Функция format_float_positional() возвращает строковое представление числа с плавающей точкой.

Данная функция использует IEEE округление и алгоритм Dragon4.

Параметры:
x - вещественное число Python или скаляр NumPy.
Входное значение.
precision - целое положительное число или None, (необязательный параметр).
Определяет максимальное количество выводимых цифр. Если unique установлено в False, то precision должно быть целым числом. Если unique установлено в True, то precision может быть None.
unique - True или False, (необязательный параметр).
Если True, то строковое представление числа создается из его кратчайшей записи, необходимой для его однозначной идентификации среди значений того же типа с использованием разумного округления. В случае если еще и не указано значение precision, то будут распечатаны все необходимые цифры, если же precision указано, то число обрезается после значения precision, а затем округляется. Если False, то число обрезается после значения precision, а затем округляется.
fractional - True или False, (необязательный параметр).
Если True, то отсечение значащих цифр делается на основе общего количества цифр после десятичной точки, включая начальные нули. Если False, то отсечение выполняется на основе общего количества цифр до и после десятичной точки, без учета начальных нулей.
trim - одна из строк: 'k', '.', '0', '-', (необязательный параметр).

Задает метод округления цифр после усечения до значения точности precision:

  • 'k' - сохраняет завершающие тули и десятичную точку, даже если за ней следуют одни нули;
  • '.' - отсекает все завершающие нули но оставляет десятичную точку;
  • '0' - отсекает все до десятичной точки и вставить ноль после нее;
  • '-' - отсекает все конечные нули и любой конечный десятичный знак.
sign - True или False, (необязательный параметр).
Определяет отображение знака '+' перед положительными значениями.
pad_left - целое положительное число, (необязательный параметр).
Дополняет число пробелами слева пока количество символов перед десятичной точкой не станет равно значению в pad_left.
pad_right - целое положительное число, (необязательный параметр).
Дополняет число пробелами справа пока количество символов после десятичной точки не станет равно значению в pad_right.
Возвращает:
str - строка Python
строковое представление исходного числа x.


Примеры

Без дополнительных параметров, возвращается строковое представление вещественного числа:

>>> import numpy as np
>>> 
>>> np.e
2.718281828459045
>>> 
>>> np.format_float_positional(np.float16(np.e))
'2.719'
>>> 
>>> np.format_float_positional(np.float32(np.e))
'2.7182817'
>>> 
>>> np.format_float_positional(np.float64(np.e))
'2.718281828459045'
>>> 
>>> # точное значение 2,7182818284590452353
... np.format_float_positional(np.float96(np.e))
'2.7182818284590450908'

Параметры unique и precision позволяют задать количество значащих цифр и точность:

>>> np.format_float_positional(np.float16(0.1))    #  unique = True по умолчанию
'0.1'
>>> 
>>> np.format_float_positional(np.float16(0.1), unique=False, precision=15)
'0.099975585937500'

Параметр fractional позволяет определить как делать отсечение - на основе всех цифр или только после десятичной точки:

>>> np.format_float_positional(np.float16(222.1), unique=False, precision=15)
'222.125000000000000'
>>> 
>>> np.format_float_positional(np.float16(222.1), unique=False, precision=15, fractional = False)
'222.125000000000'

Параметр trim позволяет задать режим округления после усечения числа:

>>> np.format_float_positional(np.float96(1.000000001), precision=7, trim = 'k')
'1.0000000'
>>> 
>>> np.format_float_positional(np.float96(1.000000001), precision=7, trim = '.')
'1.'
>>> 
>>> np.format_float_positional(np.float96(1.000000001), precision=7, trim = '0')
'1.0'
>>> 
>>> np.format_float_positional(np.float96(1.000000001), precision=7, trim = '-')
'1.'

Если необходимо отображать знак '+' перед положительными числами, то установите параметр sign в True:

>>> np.format_float_positional(np.float96(1.000001), sign = True)
'+1.0000009999999999177'

Параметры pad_left и pad_right позволяют задать выравнивание чисел слева и справа от десятичной точки знаками пробела:

>>> np.format_float_positional(np.float64(1.000001), pad_left = 10, pad_right = 10)
'         1.000001    '