MATLAB имеет функцию " fi " для представления фракций в схеме с фиксированной точкой. Его синтаксис
fi(fraction, sign, word_length, fraction_length).
Например, для представления -0.4 в фиксированной точке с 8-разрядной длиной слова и длиной 7 бит bit_length возвращается следующее:
fixed_number = fi(-0.4, 1, 8, 7) = -0.3984
fixed_number.int = -51
fixed_number.bin = 11001101
Запрос. Можем ли мы сделать подобное в Python? Есть ли функция для выполнения этого?
Библиотека Python rig полезна для этой цели. Он поддерживает как плавное, так и фиксированное преобразование с плавающей точкой.
>>> from rig.type_casts import float_to_fp, fp_to_float
>>> # Create a function to convert a float to a signed fractional
>>> # representation with 8 bits overall and 4 fractional bits (S3.4)
>>> s34 = float_to_fp(signed=True, n_bits=8, n_frac=4)
>>> hex(int(s34(0.5)))
'0x8'
>>> hex(int(s34(-7.5)))
'-0x78'
>>> # ...and make a function to convert back again!
>>> f4 = fp_to_float(n_frac=4)
>>> f4(0x08)
0.5
>>> f4(-0x78)
-7.5
decimal.Decimal
- это тип чисел с фиксированной точкой в Python (возможно, более полезный).