我正在尝试制作一个带浮点数的Python函数,并将其转换为带有二进制数的字符串(也考虑小数部分,用点分隔),但是对于某些值-例如0.5、0.25 ,0.10、0.05、0.05,...-会出现以下错误:
line 7, in floatToBinary integerPart, fractionalPart = str((convertDecimal(fractional))*2).split(".")
ValueError: Not enough values to unpack (expected 2, got 1)
功能:
def floatToBinary(floatNumber, decimalPlaces):
integerPart, fractionalPart = str(floatNumber).split(".")
integerPart = int(integerPart)
fractionalPart = int(fractionalPart)
result = bin(integerPart).lstrip("0b") + "."
for i in range(decimalPlaces):
integerPart, fractionalPart = str((convertDecimal(fractionalPart))*2).split(".")
fractionalPart = int(fractionalPart)
result += integerPart
return result
def convertDecimal(n):
while n > 1:
n /= 10
return n
希望你能帮助我。
答案 0 :(得分:1)
当n = 0时,函数convertDecimal返回0。因此没有'。'。分开。 您可以通过将返回值强制转换为float
来解决此问题def convertDecimal(n):
while n > 1:
n /= 10
return float(n)