今天在学习十进制与二进制的相互转换,学到小数的十进制转换到二进制时,所以我想着能不能用我这菜鸡技术,利用C++来实现只把十进制小数转换成二进制。
【思路】
- 输入要计算的二进制小数部分 “decimals” 以及要计算出的二进制位数
- 循环 while() 部分
- 进行小数 * 2 的运算,只输出整数部分(获得二进制数值),这部分利用了 floor() 函数,它会返回比参数小的最大整数
- 把整数部分赋值到 “integer”
- 用包含了整数与小数的数值减去整数部分,这样就获得了只存在小数部分的数值
- 利用 if() 函数,当小数部分为0时停止运算
【代码部分】
#include <iostream>
using namespace std;
int main()
{
double decimals= 0; //decimals 小数
int integer,time,a = 1; //interger 整数 time 循环次数 a 初始值
cout << "请输入要计算的二进制小数部分"<< endl;
cin >> decimals;
cout << "想要算出的位数:";
cin >> time;
while (a <= time) {
decimals = decimals * 2;//进行小数运算
cout << a <<"---"<< floor(decimals) <<endl; //输出整数部分
integer = floor(decimals); //获得整数部分
decimals = decimals - integer; //去除整数部分
a++;
if(decimals == 0){
return 1; //当小数部分为0时停止运算
}
}
return 0;
}