Octal Fractions

八进制(以8为基数)表示的小数可以用十进制精确地表示。例如,八进制的0.75表示为十进制的0.953125(7/8+5/64)。所有在小数点右边的n位八进制数可以用不超过在小数点右边的32位的十进制小数来表示。编写一个程序,将0~1之间(包含0和1)的八进制小数转换为等同的十进制小数。

输入

程序的输入将由一个八进制数组成。输入的八进制数的格式为0.d1d2d3...dk,其中di是八进制数字(0...7),对k没有限制。

输出

输出由一行组成,格式为0.d1d2d3...dk[8]=0.D1D2D3...Dm[10],其中,左氏是输入(八进制);由式是等同的十进制值,不能有0结尾,即Dm不等于0。

样例输入 复制

0.75

样例输出 复制

0.75 [8] = 0.953125 [10]
s=input()#输入
q=s
qq=""
length=len(s)#总长度
s=int(eval(s)*pow(10,length-2))#将小数变为整数
s=str(s)#转化为字符串
r=len(s)#变为整数之后的长度
shi=0#十位数
t=1#8的几次幂
for i in s:
    if t<=length-2:
        shi+=eval(i)/pow(8,length-2-r+t)
        t+=1
    else:
        break
#目的是除去后面的0
sh="{:.24f}".format(shi)
#去除后面为0的即可
sh=str(sh)
il=0
for i in sh[::-1]:#倒序了:
    if i=='0':
        il+=1
    else:
        break
qq=q+"[8]"+"="+sh[:24-il+2]+"[10]"
print(qq)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值