8340 十进制小数转为N进制数 位运算

描述

输入一个十进制小数x和一个整数n,n表示进制。输出该数字x对应的n进制数。例如,1065.8125的8进制数,则为2051.64。

输入描述

两个数字,分别是十进制小数x和进制数n,两个数字用空格隔开。
第一个是十进制小数x(整数部分位数≤6,1≤小数部分位数≤3、并且不能为0)。
第二个是进制数n(n可以是2、8、16)。

输出描述

一个数字,表示十进制小数x对应的n进制数,保留小数点后3位。

样例输入 1 

12.827 8

样例输出 1 

14.647

样例输入 2 

128.625 16

样例输出 2 

80.A

#include<bits/stdc++.h>
using namespace std;
int main() {
  double x;
    int n;
    cin>>x>>n;
    int a=int(x);
    double b=x-a;
    string ans="";
    if(a==0)ans="0";
    string str="0123456789ABCDEF";
        while(a>0){
            int mod=a%n;
            ans=str[mod]+ans;
            a=a/n;
        }
    ans+=".";
    int cnt=0;
    while(b>0&&cnt<3){
        b=b*n;
        int i=int(b);
        ans=ans+str[i];
        b=b-i;
        cnt++;
    }
    cout<<ans;
    return 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值