10进制纯小数转2进制小数。

来源:互联网 发布:sass for mac 安装 编辑:程序博客网 时间:2024/05/16 10:50

今天,毛线同学写作业的时候,突然冒出个想法:写个十进制小数转二进制小数的程序如何?  我一想,中!。刚好写作业的时候,需要用到。

于是,立即回寝室。写起。完成的还是挺快的.

10进制纯小数转2进制小数的方法,很简单。就是对小数部分,乘二。之后,对整数位取整。整数位为0就是零,为1就是1,然后整数位归零。重复这个过程。

直到,得出的结果为0。


/* *名称:限制版进制转换 * *概述 :十进制小数转换二进制,不可直接用分数作为输入。 * *  作者:CSB * *日期:13/5/1 * */#include <iostream>using namespace std;//////////////////////////////////////////////////////////////////////////// 常量//////////////////////////////////////////////////////////////////////////const int precision = 100;//精确到几位,即算出来的小数的最大位数const double ratio = 0.000000001;//精度,当一个浮点数与ratio的差小于ratio时,则算作0//////////////////////////////////////////////////////////////////////////// 函数定义///////////////////////////////////////////////////////////////////////////*****************************************************************判断输入的小数,是否小于精度值*小于则判断为0,返回真**/bool is_zero( const double &in ){if( in - ratio < ratio ){return true;}else{return false;}}/*****************************************************************功能:10进制转换为2进制**概述:每步对十进制小数乘二取整,然后继续对剩下的小数部分,乘二取整*直到小数部分变为零**输入数的类型,要求为纯小数。**/void Dec_To_Bin(double &in){int time = 0,sign_bit = 0;//当输入的数为负数时,取这个数的绝对值,同时sign_bit置1(表示符号位)。if( in > 1){cout<<"整数部分不为0,暂时不支持这种转换"<<endl;return;}elseif( in < 0 ){in = abs(in);sign_bit = 1;}//输出符号位和小数点cout<<sign_bit<<'.';//输入数为0,则直接输出0if( is_zero(in) ){cout<<0<<endl;return;}//进行运算,乘二后的得数,若大于1,则证明整数部分为1,输出1.//同理小于1输出0,当得数等于1时,转换完成。while( time <= precision ){in *= 2;if( in > 1 ){in -= 1;cout<<1;}elseif( in == 1 ){cout<<1<<endl;break;}elseif( in < 1 && in > 0){cout<<0;}time++;}}/*****************************************************************功能:输入十进制小数,转换为二进制小数,支持多次输入**注意:当一个小数后面跟着字符的时候,会只计算那个小数。同时,后面的字符*会被清除**/void input_Dec_Output_Bin(){double in =  0.;char q = ' ';while( q != 'q' ){cout<<"请输入需要转换的小数: ";cin>>in;//清空输入缓冲区,防止错误输入cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');Dec_To_Bin(in);cout<<"退出请按q,继续请输入其他字符"<<endl;cin>>q;//清空输入缓冲区,防止错误输入cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');}}int main(void){system("color 0e");input();return 0;}


原创粉丝点击