带小数点的十进制转换8进制代码C语言
时间: 2023-08-18 19:39:11 浏览: 136
以下是C语言代码实现带小数点的十进制转换为八进制的示例:
```c
#include <stdio.h>
#include <string.h>
void decimal_to_octal(double decimal_num, char* octal_str) {
int integer_part = (int)decimal_num; // 整数部分
int remainder; // 余数
int idx = 0; // 索引
int i;
// 处理整数部分
while (integer_part > 0) {
remainder = integer_part % 8;
octal_str[idx++] = remainder + '0';
integer_part /= 8;
}
octal_str[idx] = '\0';
// 反转整数部分
int len = strlen(octal_str);
for (i = 0; i < len / 2; i++) {
char temp = octal_str[i];
octal_str[i] = octal_str[len - i - 1];
octal_str[len - i - 1] = temp;
}
// 处理小数部分
double decimal_part = decimal_num - (int)decimal_num;
if (decimal_part == 0) {
return; // 如果小数部分为0,则直接返回八进制整数部分
}
strcat(octal_str, "."); // 添加小数点
int precision = 5; // 设置小数部分的精度为5位
while (decimal_part > 0 && precision > 0) {
decimal_part *= 8;
int integer_part = (int)decimal_part;
octal_str[idx++] = integer_part + '0';
decimal_part -= integer_part;
precision--;
}
octal_str[idx] = '\0';
}
int main() {
double decimal_num = 123.625;
char octal_str[20];
decimal_to_octal(decimal_num, octal_str);
printf("%.3f in decimal = %s in octal\n", decimal_num, octal_str);
return 0;
}
```
该程序接受一个带小数点的十进制数作为输入,将其转换为八进制表示后输出。其中,先将整数部分转换为八进制表示,然后将小数部分乘以8,取整数部分作为八进制的一位,直到小数部分为0或者达到所需的精度为止。最后将整数部分和小数部分拼接起来,中间加上小数点即可。注意,由于C语言中没有字符串类型,因此需要使用字符数组来保存八进制表示。另外,为了方便输出,本示例中使用了printf函数来格式化输出结果。
阅读全文