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?

questionAnswers(2)

yourAnswerToTheQuestion