假设我们有一个表示二进制分数的字符串,例如:
".1"
以十进制数表示为 0.5。 Python 中是否有一种标准方法可以将此类字符串转换为数字类型(无论是二进制还是十进制并不严格重要)。
对于整数,解决方案很简单:
int("101", 2)
>>>5
int() 采用可选的第二个参数来提供基数,但 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
I think这就是我想要的,尽管我很可能错过了一些边缘情况。
Python 中有内置的或标准的方法可以做到这一点吗?
以下是表达相同算法的更简短的方式:
def parse_bin(s):
return int(s[1:], 2) / 2.**(len(s) - 1)
它假定字符串以点开头。如果您想要更通用的东西,以下将处理整数和小数部分:
def parse_bin(s):
t = s.split('.')
return int(t[0], 2) + int(t[1], 2) / 2.**len(t[1])
例如:
In [56]: parse_bin('10.11')
Out[56]: 2.75
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)