Jak przekonwertować ciąg reprezentujący ułamek binarny na liczbę w Pythonie
Załóżmy, że mamy ciąg reprezentujący ułamek binarny, taki jak:
".1"
Jako liczba dziesiętna jest to 0,5. Czy w Pythonie istnieje standardowy sposób przechodzenia od takich ciągów do typu liczbowego (bez względu na to, czy jest to binarny czy dziesiętny).
Dla liczby całkowitej rozwiązanie jest proste:
int("101", 2)
>>>5
int () pobiera opcjonalny drugi argument, aby zapewnić bazę, ale float () nie.
Szukam czegoś funkcjonalnie równoważnego (myślę) do tego:
def frac_bin_str_to_float(num):
"""Assuming num to be a string representing
the fractional part of a binary number with
no integer part, return num as a float."""
result = 0
ex = 2.0
for c in num:
if c == '1':
result += 1/ex
ex *= 2
return result
I myśleć to robi to, co chcę, chociaż mogłem pominąć niektóre przypadki skrajne.
Czy istnieje wbudowana lub standardowa metoda robienia tego w Pythonie?