十进制小数转换为二进制表示 ← 除2取余法+乘2取整法
【算法分析】
● 如下代码首先分离整数和小数部分,整数部分通过除 2 取余法转换,小数部分通过乘 2 取整法转换。最多保留 32 位小数精度。
● 命令 (int)num 将浮点数 num 强制转换为整数。
【算法代码】
#include <bits/stdc++.h>
using namespace std;string decimalToBinary(double num) {//intPartint intPart=(int)num;string intBinary;while(intPart>0) {intBinary+=(intPart%2)+'0';intPart/=2;}reverse(intBinary.begin(), intBinary.end());//fracPartdouble fracPart=num-(int)num;string fracBinary;while(fracPart>0) {if(fracBinary.length()>=32) break;fracPart*=2;if(fracPart>=1) {fracBinary+='1';fracPart-=1;} else fracBinary+='0';}return intBinary+(fracBinary.empty()?"" : "."+fracBinary);
}int main() {double num;cin>>num;cout<<decimalToBinary(num)<<endl;return 0;
}/*
in:123.456
out:1111011.01110100101111000110101001111110
*/
【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/149136573
https://blog.csdn.net/hnjzsyjyj/article/details/146247521