次のような 2 進分数を表す文字列があるとします。
".1"
10 進数として、これは 0.5 です。Python でそのような文字列から数値型に変換する標準的な方法はありますか (2 進数か 10 進数かは厳密には重要ではありません)。
整数の場合、解決策は簡単です。
int("101", 2)
>>>5
int() はベースを提供するためにオプションの 2 番目の引数を取りますが、float() は取りません。
私はこれと機能的に同等のものを探しています(私は思う):
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
いくつかのエッジケースを見逃しているかもしれませんが、それは私が望むことだと思います。
Pythonでこれを行う組み込みまたは標準の方法はありますか?