0
我刚刚开始学习如何在Sagemath中编写代码,我知道它与Python相似,但我也没有太多经验。
我想添加两个代表分数的二进制数字。也就是说,像在Sagemath中总结表示分数的二进制数字
a = '110'
b = '011'
bin(int(a,2) + int(b,2))
但使用表示分数,如'1.1'的值。
在此先感谢!
我刚刚开始学习如何在Sagemath中编写代码,我知道它与Python相似,但我也没有太多经验。
我想添加两个代表分数的二进制数字。也就是说,像在Sagemath中总结表示分数的二进制数字
a = '110'
b = '011'
bin(int(a,2) + int(b,2))
但使用表示分数,如'1.1'的值。
在此先感谢!
如果你想在香草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'