原理:十进制小数转化成二进制,就是不断地乘二,判断之后的这个数是否比1大,比1大则输出输出1,留下小数部分继续前面的操作
算法实现(C语言):
void decimal_fraction_to_binary(double fraction, int precision) { putchar('.'); while (fraction != 0 && precision > 0) { fraction *= 2; int bit = (int)fraction; putchar(bit + '0'); fraction -= bit; --precision; } }
算法应用:
#include <stdio.h>
void decimal_fraction_to_binary(double fraction, int precision) {
putchar('.');
while (fraction != 0 && precision > 0) {
fraction *= 2;
int bit = (int)fraction;
putchar(bit + '0');
fraction -= bit;
--precision;
}
}
int main() {
double decimal = 3.75;
// 分离整数和小数部分
int integer_part = (int)decimal;
double fraction_part = decimal - integer_part;
printf("小数的二进制表示:");
decimal_fraction_to_binary(fraction_part, 8);
return 0;
}
将3.75的小数部分转化为二进制
最后的输出结果是.11