在python中创建二进制小数

时间:2016-01-04 20:20:07

标签: python binary

我正在尝试创建一个包含分数的二进制数。像这样:

0b110.101

但是,这会产生语法错误。

0b110 

但工作正常。如何创建一个不是整数的二进制数?

2 个答案:

答案 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留给读者作为练习。