Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
3871 | 孙浚轩 | 十进制小数转二进制 | C++ | Accepted | 0 MS | 260 KB | 517 | 2024-07-14 19:46:41 |
#include<iostream> #include<cmath> using namespace std; string dtob(double d){ if(d==0) return "0"; string bn,bd; long long dn=(long long)d; double dd=d-dn; if(dn==0) bn="0"; else{ while(dn>0){ bn=char(dn%2+'0')+bn; dn/=2; } } if(fabs(dd)<1e-9) return bn; while(dd!=0) dd*=2,dn=(long long)dd,bd+=char(dn+'0'),dd-=dn; return bn+'.'+bd; } int main(){ double d; cin>>d; cout<<dtob(d); return 0; }