小数转换为二进制--代码

问题:输入小数,即输入的小数小于1,转化为二进制代码输出;

实例1:
输入:0.8125
输出:0.1101

实例2:
输入:0.625
输出:0.101

实例3:
输入:0.8
输出:0.1100110011001100110011001100110011001100110011001101

图片来源:https://blog.csdn.net/defineYouMyHeart/article/details/45479469?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5 

代码:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<stack>
using namespace std;
const int maxa=1e2+10;
double sc;
int ans[maxa],cnt=0;
//idea:十进制小数转换为二进制数字0,1 
int main(){
	scanf("%lf",&sc); 
	while(true){ 
		if(sc*2>1){ 
			ans[cnt++]=1;
			sc=sc*2-1; 
		}else if(2*sc==1){
			ans[cnt++]=1; 
			break; 
		}else if(sc*2<1){
			ans[cnt++]=0;
			sc=sc*2;
		}
	}
	printf("0.");
	for(int i=0;i<cnt;i++)
		printf("%d",ans[i]);
	printf("\n");
}
原创文章 246 获赞 109 访问量 1万+

猜你喜欢

转载自blog.csdn.net/queque_heiya/article/details/105710308