带小数十进制转16进制C语言代码
时间: 2023-08-06 21:03:07 浏览: 97
C语言实现十进制转十六进制
5星 · 资源好评率100%
带小数的十进制转16进制可以先将它转换为整数部分和小数部分,然后将整数部分转换为16进制,再将小数部分转换为16进制。这里给出一个将带小数的十进制转换为16进制的C语言代码示例:
```c
#include <stdio.h>
void decimal2hex(double decimal, char *hex)
{
int integer = (int) decimal;
double fraction = decimal - integer;
char integer_hex[10], fraction_hex[10];
// Convert integer part to hex
sprintf(integer_hex, "%X", integer);
// Convert fraction part to hex
int i = 0;
while (fraction > 0 && i < 4) {
fraction *= 16;
int digit = (int) fraction;
fraction -= digit;
fraction_hex[i] = (digit < 10) ? digit + '0' : digit + 'A' - 10;
i++;
}
fraction_hex[i] = '\0';
// Combine integer and fraction hex
if (fraction > 0) {
sprintf(hex, "%s.%s", integer_hex, fraction_hex);
} else {
sprintf(hex, "%s", integer_hex);
}
}
int main()
{
double decimal = 233.75;
char hex[20];
decimal2hex(decimal, hex);
printf("Decimal %.2f in hex is %s\n", decimal, hex);
return 0;
}
```
输出结果为:
```
Decimal 233.75 in hex is E9.C0
```
其中,decimal2hex函数接受一个双精度浮点数和一个字符数组指针作为参数,将转换结果存放在该字符数组中。函数先将浮点数分解为整数部分和小数部分,然后分别将它们转换为16进制数。小数部分最多转换4位,因为单精度浮点数的小数部分只有23位,所以最多转换4位可以保证精度。最后将整数和小数部分合并成一个字符串返回。
阅读全文