<p>您的问题是您的号码在表5.67e-05中的表示方式。当你把它转换成字符串时,你的代码就会中断</p>
<p>相反,您可以使用以下函数</p>
<pre><code>import decimal
from ctypes import *
def float_bin(number, places = 32):
whole, dec = str(decimal.Decimal(value=str(float(number)))).split(".")
whole = int(float(whole))
dec = int (float(dec))
res = bin(whole).lstrip("0b") + "."
for x in range(places):
whole, dec = str((decimal_converter(dec)) * 2).split(".")
dec = int(dec)
res += whole
return res
def decimal_converter(num):
while num > 1:
num /= 10
return num
</code></pre>
<p>输出将是</p>
<pre><code>float_bin(0.0000567)
Out[35]: '.10011011101100110011001100110011'
</code></pre>
<p>为了获得正确的函数输出,您可能需要</p>
<pre><code>import decimal
</code></pre>
<p>从ctypes导入*</p>
<pre><code>def float_bin(number):
whole, dec = str(decimal.Decimal(value=str(number))).split(".")
whole = int(float(whole))
dec = int (float(dec))
return bin(whole).lstrip("0b") + "." + bin(dec).lstrip("0b")
def decimal_converter(num):
while num > 1:
num /= 10
return num
float_bin(0.0000567)
Out[52]: '.1000110111'
</code></pre>