十进制的0.75转换成十六进制不是0.CH吗?没有太明白你的表示方法.
我想你要解决的问题有这么几个:
(1)整数十转16:用除以16反向取余数,即可,递归堆栈都行;
(2)十六转十:按权展开求和就可以;
(3)小数的十转十六;
对于第三个问题,我写了如下的代码,注意:只针对小数的十进制转十六进制,刚写的,测试通过,你可以参考一下:
#include<iostream.h>
/////////////////////////////////////////////
//把十进制的纯小数转成是十六进制
//其中i是小数点后保留的位数(适用于无法精确表示的场合)
//采用乘以16取整的方法
/////////////////////////////////////////////
void Trans(double x,int p)
{
int i=0;
//控制保留的有效位数
cout<<"0.";
while(i<p)
{
if(x==0)
//如果小数部分是0
break;
//则退出循环
else
{
int k=int(x*16);
//取整数部分
x=x*16-int(k);
//得到小数部分
if(k<=9)
cout<<k;
else
cout<<char(k+55);
};
i++;
};
cout<<"H"<<endl;
};
//////////////////////////////Trans()函数结束
/////////////////////////////////////////////
//main()函数
/////////////////////////////////////////////
int main()
{
Trans(0.372,5);
return 0;
};
///////////////////////////////main()函数结束