在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