python⼗进制转九进制_Python-任⼀⼗进制数转换为其他进制
数
对于任⼀的⼗进制数据,可先将其分成整数部分和⼩数部分。整数部分利⽤Python⾃带的bin()函数、oct()函数和hex()函数可直接转换(详见Python-编码规则);⼩数部分可利⽤该编程⽅法(详见Python-⼗进制的⼩数部分转换为其他进制数)进⾏转换。最后分别将转换之后的整
数部分和⼩数部分写在⼀起即可。
这⾥在前⾯编程⽅法的基础上(详见Python-⼗进制的⼩数部分转换为其他进制数),对以上过程⽤⼀个程序来实现。
#代码如下:
import math
from decimal import Decimal
datum = input('请输⼊要转换的⼗进制数:')
# 通过input函数得到的变量为字符串类型,即datum为字符串类型的变量
ly = 16
# 可调整的地⽅1:这⾥设置要转换为⼏进制
# 先开始整数部分的转换
python货币转换AA = int(float(datum))
# int()函数不能将字符串类型的数据转换为整数,所以得先⽤float()函数将其转换为浮点型数据(注意float函数只能转换数字类的字符串,⽽不能转换⽂字类的字符串)
# int()函数对浮点型数据进⾏转换时,是向下取整(即直接取整数部分)
if ly == 2:
BB=bin(AA)
if ly == 8:
BB=oct(AA)
if ly == 16:
BB=hex(AA)
# 再开始⼩数部分的转换
aa = Decimal(str(datum)) - Decimal(str(AA))
# Decimal输⼊的参数要求是字符串类型,如Decimal('1.1')+Decimal('2.2'),所以这⾥应该利⽤str()函数将数据转换为字符串类型
if aa > 0:
# 设置这个条件语句的⽬的是防⽌输⼊的刚好是⼀个整数,这样的话就不⽤对⼩数部分进⾏转换了
n = 10
# 可调整的地⽅2:设定保留的⼆进制⼩数的位数(之所以要设定是因为有些⼗进制的⼩数如0.7,化为⼆进制的⼩数时,会出现⽆限循环的情况)
m = range(n)
cc = []
for i in m:
bb = aa * ly
dd = math.floor(bb)
# math.floor()函数向下取整(即直接取整数部分);il()函数向上取整数(即取整数部分加1);这两者均不进⾏四舍五⼊的运算cc.append(dd)
aa = Decimal(str(bb)) - Decimal(str(dd))
# Decimal输⼊的参数要求是字符串类型,如Decimal('1.1')+Decimal('2.2'),所以这⾥应该利⽤str()函数将数据转换为字符串类型if ly > 10:
if cc[i] == 10:
cc[i] = 'A'
if cc[i] == 11:
cc[i] = 'B'
if cc[i] == 12:
cc[i] = 'C'
if cc[i] == 13:
cc[i] = 'D'
if cc[i] == 14:
cc[i] = 'E'
if cc[i] == 15:
cc[i] = 'F'
# 以上的条件语句是当将数据转换为⼗六进制的时候,应该⽤字母来代替10以上的数字⽽添加的
ee = [str(i) for i in cc]
ff = ''.join(ee)
# 以上两⾏是将列表中的元素连起来形成⼀个字符串后再进⾏输出
# 将整数部分和⼩数部分汇总
print('转换得到的' + str(ly) + '进制数为:' + str(BB) + '.' + ff)
else:
print('转换得到的' + str(ly) + '进制数为:' + str(BB))
当然,可以将⼩数部分转换的程序写成⼀个函数或是⼀个模块,这样在以后的使⽤中就可以直接引⽤或者导⼊,这⾥就不赘述了。
以上程序是正数的转换,如果需要转换负数,那就先转换该数的正数形式,再在转换结果前加上负号即可。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论