十进制小数转换为二进制
程序员文章站
2022-07-15 09:56:35
...
十进制小数转换为二进制
采用乘2取整的方法
1.用2乘以十进制小数,将得到的乘积整数部分取出2.再用2乘以余下的小数,再将乘积的整数部分取出
3.反复进行直到乘积的小数部分为0或者满足精度要求为止
4.把最先得到的整数作为二进制小数的最高位,
5.把最后得到的整数作为二进制数的最低位
6.依次排列即可得到
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
double num;
int k;//精度
while(cin>>num>>k)
{
vector<int> dig;
dig.clear();
double temp=num;
while(dig.size()<k){
temp*=2;
int n=(int)floor(temp);
//cout<<temp<<" "<<n<<endl;
dig.push_back(n);
if(n==temp) break;
temp-=n;
//cout<<temp<<endl;
}
cout<<"0.";
for(int i=0;i<dig.size();i++)
cout<<dig[i];
cout<<endl;
}
return 0;
}