我正在尝试创建一个包含分数的二进制数。像这样:
0b110.101
但是,这会产生语法错误。
0b110
但工作正常。如何创建一个不是整数的二进制数?
答案 0 :(得分:1)
您使用 Binary fractions 包。
这让您可以将二进制分数字符串转换为数字,反之亦然 示例:
>>> from binary_fractions import Binary
>>> str(Binary(6.625))
'0b110.101'
>>> float(Binary("0b110.101"))
6.625
它有更多的辅助函数来操作二进制字符串,例如:shift、add、fill、to_exponential、invert...
PS:无耻的插件,我是这个包的作者。
答案 1 :(得分:0)
如何创建不是整数的二进制数?
二进制是数字的 text 表示。字符串用于存储文本,因此可以使用以下内容:
"110.101"
但我认为你误解了你的问题。您不希望数字的二进制表示,您想要数字本身。 110.101 2 代表数字6和5。创建该数字有无限的方法,包括以下内容:
6 + 5/8
6.625
那就是说,我怀疑你更愿意在源代码中看到数字的二进制表示。不幸的是,Python没有十进制二进制数字文字。你可以用
0b110101 / (1>>3)
bin_to_num("110.101")
写作bin_to_num
留给读者作为练习。