国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

python十進(jìn)制和二進(jìn)制的轉(zhuǎn)換方法(含浮點(diǎn)數(shù))

2020-02-15 22:15:16
字體:
供稿:網(wǎng)友

本文介紹了python十進(jìn)制和二進(jìn)制的轉(zhuǎn)換方法(含浮點(diǎn)數(shù)),分享給大家,也給自己留個(gè)筆記,具體如下:

我終于寫完了 , 十進(jìn)制轉(zhuǎn)二進(jìn)制的小數(shù)部分卡了我將近一個(gè)小時(shí)

上代碼

#-*- coding: utf-8from decimal import Decimaldef bTod(n, pre=4):  '''  把一個(gè)帶小數(shù)的二進(jìn)制數(shù)n轉(zhuǎn)換成十進(jìn)制  小數(shù)點(diǎn)后面保留pre位小數(shù)  '''  string_number1 = str(n) #number1 表示二進(jìn)制數(shù),number2表示十進(jìn)制數(shù)  decimal = 0 #小數(shù)部分化成二進(jìn)制后的值  flag = False    for i in string_number1: #判斷是否含小數(shù)部分    if i == '.':      flag = True      break  if flag: #若二進(jìn)制數(shù)含有小數(shù)部分    string_integer, string_decimal = string_number1.split('.') #分離整數(shù)部分和小數(shù)部分    for i in range(len(string_decimal)):      decimal += 2**(-i-1)*int(string_decimal[i]) #小數(shù)部分化成二進(jìn)制    number2 = int(str(int(string_integer, 2))) + decimal    return round(number2, pre)  else: #若二進(jìn)制數(shù)只有整數(shù)部分    return int(string_number1, 2)#若只有整數(shù)部分 直接一行代碼二進(jìn)制轉(zhuǎn)十進(jìn)制 python還是騷 def dTob(n, pre=4):  '''  把一個(gè)帶小數(shù)的十進(jìn)制數(shù)n轉(zhuǎn)換成二進(jìn)制  小數(shù)點(diǎn)后面保留pre位小數(shù)  '''  string_number1 = str(n) #number1 表示十進(jìn)制數(shù),number2表示二進(jìn)制數(shù)  flag = False    for i in string_number1: #判斷是否含小數(shù)部分    if i == '.':      flag = True      break  if flag:    string_integer, string_decimal = string_number1.split('.') #分離整數(shù)部分和小數(shù)部分    integer = int(string_integer)    decimal = Decimal(str(n)) - integer    l1 = [0,1]    l2 = []    decimal_convert = ""    while True:       if integer == 0: break      x,y = divmod(integer, 2) #x為商,y為余數(shù)       l2.append(y)      integer = x    string_integer = ''.join([str(j) for j in l2[::-1]]) #整數(shù)部分轉(zhuǎn)換成二進(jìn)制     i = 0     while decimal != 0 and i < pre:       result = int(decimal * 2)       decimal = decimal * 2 - result       decimal_convert = decimal_convert + str(result)       i = i + 1     string_number2 = string_integer + '.' + decimal_convert    return float(string_number2)    else: #若十進(jìn)制只有整數(shù)部分    l1 = [0,1]    l2 = []    while True:       if n == 0: break      x,y = divmod(n, 2) #x為商,y為余數(shù)       l2.append(y)      n = x    string_number = ''.join([str(j) for j in l2[::-1]])     return int(string_number)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林站長(zhǎng)站。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中江县| 盘锦市| 灵石县| 伊通| 灵璧县| 溧阳市| 济宁市| 木兰县| 布拖县| 北碚区| 新晃| 长宁县| 漳浦县| 鄂托克旗| 襄汾县| 左权县| 应城市| 英超| 临泽县| 阳信县| 双峰县| 车险| 离岛区| 朝阳市| 广平县| 鹿泉市| 阳曲县| 白银市| 肃宁县| 曲麻莱县| 营山县| 曲阜市| 天镇县| 宜章县| 介休市| 成安县| 芮城县| 凤翔县| 民权县| 会同县| 高阳县|