一、浮點數表示
浮點數是計算機科學中的一種數據類型,用於表示帶有小數點的數字。在Python中,浮點數通常使用包含小數點的數字表示。
num1 = 3.14
num2 = 2.5
上述代碼中的num1和num2都是浮點數,分別表示3.14和2.5。
二、浮點數進位轉換
在Python中,浮點數可以表示為10進位、2進位、8進位或16進位。Python提供了多種方法可以將不同進位的浮點數相互轉換。以下是一些常見的轉換方法:
1. 10進位轉2進位
在Python中,可以使用內置函數bin()將10進位的浮點數轉換為2進位。
num = 10.5
binary = bin(int(num))[2:] + '.' + ''.join('{:04b}'.format(int((num - int(num)) * 2 ** 4)))
print(binary)
上述代碼中,首先使用int()函數將浮點數轉換為整數,然後使用bin()函數將整數轉換為2進位字元串。’b’是二進位的意思。最後使用.format()方法格式化小數部分的二進位字元串。
2. 10進位轉8進位
在Python中,可以使用內置函數oct()將10進位的浮點數轉換為8進位。
num = 10.5
octal = oct(int(num)) + '.' + ''.join(str(int((num - int(num)) * 8)) for i in range(8))
print(octal)
上述代碼中,首先使用int()函數將浮點數轉換為整數,然後使用oct()函數將整數轉換為8進位字元串。最後使用range()函數循環8次,使用str()函數將小數部分乘8後轉換為字元串。
3. 10進位轉16進位
在Python中,可以使用內置函數hex()將10進位的浮點數轉換為16進位。
num = 10.5
hexadecimal = hex(int(num))[2:] + '.' + ''.join(str(hex(int((num - int(num)) * 16)))[2:] for i in range(8))
print(hexadecimal)
上述代碼中,首先使用int()函數將浮點數轉換為整數,然後使用hex()函數將整數轉換為16進位字元串。'[2:]’用於去除字元串前兩個不需要的字元 ‘0x’。最後使用range()函數循環8次,將小數部分乘16後轉換為16進位字元串。
4. 2進位轉10進位
在Python中,可以使用內置函數int()將2進位的浮點數轉換為10進位。
binary = '1010.1000'
decimal = sum([int(num) * 2 ** (i - dot_index - 1) for i, num in enumerate(binary) if num.isdigit()])
print(decimal)
上述代碼中,使用sum()和enumerate()函數遍歷2進位字元串。使用isdigit()函數判斷字元是否是數字,將小數點位置作為起始位置進行計算。
5. 2進位轉8進位
在Python中,可以先將2進位的浮點數轉換為10進位,然後再將10進位轉換為8進位。
binary = '1010.1000'
decimal = sum([int(num) * 2 ** (i - dot_index - 1) for i, num in enumerate(binary) if num.isdigit()])
octal = oct(decimal)
print(octal)
6. 2進位轉16進位
在Python中,可以先將2進位的浮點數轉換為10進位,然後再將10進位轉換為16進位。
binary = '1010.1000'
decimal = sum([int(num) * 2 ** (i - dot_index - 1) for i, num in enumerate(binary) if num.isdigit()])
hexadecimal = hex(decimal)
print(hexadecimal)
7. 8進位轉10進位
在Python中,可以使用內置函數int()將8進位的浮點數轉換為10進位。
octal = '12.4'
decimal = sum([int(num) * 8 ** (i - dot_index - 1) for i, num in enumerate(octal) if num.isdigit()])
print(decimal)
上述代碼中,使用sum()和enumerate()函數遍歷8進位字元串。使用isdigit()函數判斷字元是否是數字,將小數點位置作為起始位置進行計算。
8. 8進位轉2進位
在Python中,可以先將8進位的浮點數轉換為10進位,然後再將10進位轉換為2進位。
octal = '12.4'
decimal = sum([int(num) * 8 ** (i - dot_index - 1) for i, num in enumerate(octal) if num.isdigit()])
binary = bin(decimal)[2:]
print(binary)
9. 8進位轉16進位
在Python中,可以先將8進位的浮點數轉換為10進位,然後再將10進位轉換為16進位。
octal = '12.4'
decimal = sum([int(num) * 8 ** (i - dot_index - 1) for i, num in enumerate(octal) if num.isdigit()])
hexadecimal = hex(decimal)
print(hexadecimal)
10. 16進位轉10進位
在Python中,可以使用內置函數int()將16進位的浮點數轉換為10進位。
hexadecimal = 'a.c'
decimal = sum([int(num, 16) * 16 ** (i - dot_index - 1) for i, num in enumerate(hexadecimal) if num.isdigit() or (num >= 'a' and num <= 'f')])
print(decimal)
上述代碼中,使用sum()和enumerate()函數遍歷16進位字元串。使用isdigit()函數判斷字元是否是數字,使用int()函數將16進位字元串轉換為整型。將小數點位置作為起始位置進行計算。
11. 16進位轉2進位
在Python中,可以先將16進位的浮點數轉換為10進位,然後再將10進位轉換為2進位。
hexadecimal = 'a.c'
decimal = sum([int(num, 16) * 16 ** (i - dot_index - 1) for i, num in enumerate(hexadecimal) if num.isdigit() or (num >= 'a' and num <= 'f')])
binary = bin(decimal)[2:]
print(binary)
12. 16進位轉8進位
在Python中,可以先將16進位的浮點數轉換為10進位,然後再將10進位轉換為8進位。
hexadecimal = 'a.c'
decimal = sum([int(num, 16) * 16 ** (i - dot_index - 1) for i, num in enumerate(hexadecimal) if num.isdigit() or (num >= 'a' and num <= 'f')])
octal = oct(decimal)
print(octal)
三、結論
在Python中,可以使用多種方法將不同進位的浮點數相互轉換。通過上述代碼示例的學習,我們可以掌握Python中浮點數進位轉換的基本方法。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/187975.html