python十进制转九进制_Python-任一十进制数转换为其他进制数

对于任一的十进制数据,可先将其分成整数部分和小数部分。整数部分利用Python自带的bin()函数、oct()函数和hex()函数可直接转换(详见Python-编码规则);小数部分可利用该编程方法(详见Python-十进制的小数部分转换为其他进制数)进行转换。最后分别将转换之后的整数部分和小数部分写在一起即可。

这里在前面编程方法的基础上(详见Python-十进制的小数部分转换为其他进制数),对以上过程用一个程序来实现。

#代码如下:

import math

from decimal import Decimal

datum = input('请输入要转换的十进制数:')

# 通过input函数得到的变量为字符串类型,即datum为字符串类型的变量

ly = 16

# 可调整的地方1:这里设置要转换为几进制

# 先开始整数部分的转换

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()函数向下取整(即直接取整数部分);math.ceil()函数向上取整数(即取整数部分加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))

当然,可以将小数部分转换的程序写成一个函数或是一个模块,这样在以后的使用中就可以直接引用或者导入,这里就不赘述了。

以上程序是正数的转换,如果需要转换负数,那就先转换该数的正数形式,再在转换结果前加上负号即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值