欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

小数进制转换

程序员文章站 2024-03-17 14:39:10
...

编程序实现如下功能:输入一个正的十进制纯小数和一个表示进制的整数n(n<10),然后将这个十进制纯小数转换为n进制小数,最后输出结果。

输入格式:
一个正的十进制纯小数,一个整数n(n<10),数据之间以空格分隔。

输出格式:
n进制小数,最多保留16位小数,最后输出换行符。

输入样例:
0.8 2
输出样例:
0.1100110011001100

十进制小数转换为N进制小数的方法为乘N取整法

所谓乘N取整法是将十进制的小数乘以N,得到的整数部分作为小数点后第一位。剩余的小数部分再乘以N,得到的整数部分作为小数点后第二位。直到剩余小数部分为0,或达到一定精度为止。
如十进制的0.55转换为16进制的过程为:
0.5516=8.8 —8
0.8
16=12.8 —12
0.816=12.8 —12
0.8
16=12.8 —12

#include<bits/stdc++.h>
using namespace std;
int main(){
	double num,cnum;
	int a,b,i=0,h=16;
	cin>>num>>a;
	cnum=num;
	char ch[100];
	while(h--){
		double c=cnum*a;
		int d=(int)c;
		if(d<10)ch[i++]=d+'0';
		else ch[i++]=d-10+'A';//16进制以上
		if(c==d*1.0)break;	
		cnum=c-d*1.0;
	}
    printf("0.");
    for(i=0;i<16;i++)printf("%c",ch[i]);
    printf("\n");
}

相关标签: 算法c++