在C ++中将小数转换为二进制数
在本教程中,我们将讨论将小数转换为二进制数的程序。
为此,我们将提供一个小数部分和整数“k”。我们的任务是将给定的十进制小数转换为其二进制等效值,直到十进制精度的给定“k”位数。
示例
#include<bits/stdc++.h> using namespace std; //将十进制转换为二进制数 string convert_tobinary(double num, int k_prec) { string binary = ""; //得到整数部分 int Integral = num; //得到小数部分 double fractional = num - Integral; //将整数转换为二进制 while (Integral) { int rem = Integral % 2; binary.push_back(rem +'0'); Integral /= 2; } //反转字符串以获得 //所需的二进制数 reverse(binary.begin(),binary.end()); binary.push_back('.'); //将分数转换为二进制 while (k_prec--) { fractional *= 2; int fract_bit = fractional; if (fract_bit == 1) { fractional -= fract_bit; binary.push_back(1 + '0'); } else binary.push_back(0 + '0'); } return binary; } int main() { double n = 4.47; int k = 3; cout << convert_tobinary(n, k) << "\n"; n = 6.986 , k = 5; cout << convert_tobinary(n, k); return 0; }
输出结果
100.011 110.11111