Python 没有提供任何内置方法来轻松地将浮点十进制数转换为二进制数。所以,让我们手动执行此操作。
方法:
要将浮点十进制数转换为二进制,首先将整数部分转换为二进制形式,然后将小数部分转换为二进制形式,最后将两个结果组合得到最终答案。
对于整数部分,继续将数字除以 2 并记下余数,除非被除数小于 2。如果是这样,停止并将所有余数复制在一起。
对于小数部分,继续将小数部分乘以 2,直到并且除非 0 作为小数部分留下。第一次相乘后,记下整数部分,然后再次将新值的小数部分乘以 2。继续这样做,直到达到完美数字。
Above steps can be written as:
1(base 10) = 1(base 2) and .234(base 10) = .0011(base 2)Now, to get the binary of 1.234, merge both results as a complete number.
(1)10 = (1)2
[approx.]
(.234)10 = (.0011)2
(1.234)10 = (1.0011...)2
(1.234)10 = (1.0011)2
下面是实现:
Python3
# Python program to convert float
# decimal to binary number
# Function returns octal representation
def float_bin(number, places = 3):
# split() separates whole number and decimal
# part and stores it in two separate variables
whole, dec = str(number).split(".")
# Convert both whole number and decimal
# part from string type to integer type
whole = int(whole)
dec = int (dec)
# Convert the whole number part to it's
# respective binary form and remove the
# "0b" from it.
res = bin(whole).lstrip("0b") + "."
# Iterate the number of times, we want
# the number of decimal places to be
for x in range(places):
# Multiply the decimal value by 2
# and separate the whole number part
# and decimal part
whole, dec = str((decimal_converter(dec)) * 2).split(".")
# Convert the decimal part
# to integer again
dec = int(dec)
# Keep adding the integer parts
# receive to the result variable
res += whole
return res
# Function converts the value passed as
# parameter to it's decimal representation
def decimal_converter(num):
while num > 1:
num /= 10
return num
# Driver Code
# Take the user input for
# the floating point number
n = input("Enter your floating point value:\n")
# Take user input for the number of
# decimal places user want result as
p = int(input("Enter the number of decimal places of the result:\n"))
print(float_bin(n, places = p))
输出:
Enter your floating point value: 1.234 Enter the number of decimal places of the result: 4 1.0011
Enter your floating point value: 11.234 Enter the number of decimal places of the result: 4 1011.0011
相关用法
- Python binary转ASCII用法及代码示例
- Python ASCII转Binary用法及代码示例
- Python Binary转Hexadecimal用法及代码示例
- Python String转Binary用法及代码示例
- Python binary转string用法及代码示例
- Python image转binary用法及代码示例
注:本文由纯净天空筛选整理自retr0大神的英文原创作品 Python program to convert floating to binary。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。