在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

以上是 在C ++中将小数转换为二进制数 的全部内容, 来源链接: utcz.com/z/331504.html

回到顶部