c函数小数转换成二进制
时间: 2024-09-24 14:18:22 浏览: 41
Python实现的十进制小数与二进制小数相互转换功能
4星 · 用户满意度95%
在C语言中,将十进制的小数转换为二进制可以采用多种方法,常见的包括手动位操作或是使用库函数如`itoa()`(仅限于老版的宽字符支持)或者第三方库。这里提供一种基于长整型和除2取余法的手动转换示例:
```c
#include <stdio.h>
#include <string.h>
void decimalToBinary(double num, char binary[50]) {
int index = 0;
int intPart = (int)num; // 整数部分
double fracPart = num - intPart; // 小数部分
// 将整数部分转换为二进制
while (intPart != 0) {
binary[index++] = '0' + (intPart % 2);
intPart /= 2;
}
binary[index] = '\0'; // 结束符
// 将小数部分乘以2,然后用int转换为二进制表示
while (fracPart > 0 && index < sizeof(binary) - 1) {
fracPart *= 2;
int bit = (int)(fracPart * 10); // 四舍五入
binary[index++] = '0' + bit;
fracPart -= bit / 10.0;
}
// 倒置数组,因为小数点后的二进制在左移后位于前部
for(int i = 0, j = strlen(binary) - 1; i < j; ++i, --j) {
char temp = binary[i];
binary[i] = binary[j];
binary[j] = temp;
}
}
int main() {
double decimal = 3.75;
char binary[50];
decimalToBinary(decimal, binary);
printf("Decimal %lf in binary is %s\n", decimal, binary);
return 0;
}
```
这个函数首先处理整数部分,然后对小数部分进行四舍五入并逐次加倍,直到小数部分为零。注意最后的循环是为了将得到的二进制小数点后部分逆序放置。
阅读全文