2017-05-18 16 views
0

저는 Sagemath에서 코드하는 법을 배우기 시작했습니다. 파이썬과 비슷하지만 그 중 많은 경험이 없습니다.
분수를 나타내는 두 이진수를 추가하려고합니다. 즉,Sagemath의 분수를 나타내는 합계 이진수

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

그러나 '1.1'과 같이 분수를 나타내는 값을 사용합니다.
미리 감사드립니다.

답변

0

바닐라 파이썬에서이 작업을 수행하려는 경우 수동으로 바이너리 분수를 파싱해도 그리 나쁘지 않습니다 (첫 번째 부분은 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'