如何将十进制345.75转换成十六进制

手工可以这样做:将整数部分除以16,取余数反过来;小数部分乘以16,取前整数。然后小数点位置不变,把它们写在一起就行了——大于9的余数或整数要用对应的十六进制符号表示。

整数部分:

345÷16 = 21?九

?21÷16 = ?1以上?五

1÷16 = ?大于0?1

求余数的倒数得到159。

小数部分:

0.75x16 =?12.0(十六进制的C)

?0.0x16 =?0

正向舍入整数得到0.c。

所以十进制数345.75的十六进制表示是159+0.c = 159.c。

如果你想编程,可以把上面的想法变成代码。我们以C为例:

#包含?" stdio.h "

#包含?& ltstring.h & gt

int?主要(无效){

双倍?x=345.75,m;

int?I,n,t;

夏尔?s[]="0123456789ABCDEF ",h[10];

for(i=0,n =(int)x;n;h[i++]=s[n%16],n/= 16);

h[I]= ' \ 0 ';

strrev(h);

for(h[i++]= ' . ',n=6,m = x-(int)x;m?& amp& amp?n-;h[i++]=s[t=int(m*16)],(m * = 16)-= t);

h[I]= ' \ 0 ';

printf("%g(10)?=?%s(16)\n ",x,h);

回归?0;

}