python小数进制转换_Python-十进制的小数部分转换为其他进制数

Python关于任意十进制的整数转换为其他进制数有可以直接用的函数,详见Python-编码规则,但是对于小数部分如何转换没有现成的函数。这里采用如下方法进行实现:

首先讲一下形成代码的理论思路:

十进制小数转换为其他进制方法(以二进制为例):取小数点后的数乘以2,取整数部分(0或1)标在后面,然后再用乘以2之后的数的小数部分再乘以2,再取其整数部分标在后面。以此类推,直到小数部分为0或者位数足够多。最后把取的整数部分按先后次序排列,就获得小数的二进制结果。

#代码如下:

import math

from decimal import Decimal

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

#注意通过input函数得到的变量为字符串类型,要利用float()函数转换为浮点数类型

ly = 2

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

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) + '进制小数为:' + '0.' + ff)

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

可能有更简便的方法,欢迎交流和讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值