2017-05-18 48 views
0

我刚刚开始学习如何在Sagemath中编写代码,我知道它与Python相似,但我也没有太多经验。
我想添加两个代表分数的二进制数字。也就是说,像在Sagemath中总结表示分数的二进制数字

a = '110' 
b = '011' 
bin(int(a,2) + int(b,2)) 

但使用表示分数,如'1.1'的值。
在此先感谢!

回答

0

如果你想在香草Python中做到这一点,手工解析二进制分数是不是太糟糕了(第一部分是从this answer);

def binstr_to_float(s): 
    t = s.split('.') 
    return int(t[0], 2) + int(t[1], 2)/2.**len(t[1]) 

def float_to_binstr(f): 
    i = 0 
    while int(f) != f: 
     f *= 2 
     i += 1 
    as_str = str(bin(int(f))) 
    if i == 0: 
     return as_str[2:] 
    return as_str[2:-i] + '.' + as_str[-i:] 

float_to_binstr(parse_bin('11.1') + parse_bin('0.111')) # is '100.011'