Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
73850 | 何嘉乐 | 二进制小数转十进制 | C++ | Accepted | 0 MS | 284 KB | 877 | 2024-05-19 18:07:20 |
#include<bits/stdc++.h> using namespace std; int main() { string s; cin>>s; //查号是否有小数点 int len=s.size();//计算字符串的整体长度 int dian=-1; for(int i=0; i<len; i++) { if(s[i]=='.') { dian=i; break; } } double sum=0; if(dian==-1) { //没有小数部分 //处理整数部分 int a[len]; int j=0; for(int i=len-1; i>=0; i--) { a[j]=s[i]-'0'; j++; } for(int i=0; i<len; i++) { sum+=pow(2,i)*a[i]; } cout<<sum; return 0; } else { //处理整数部分 int a[dian]; int j=0; for(int i=dian-1; i>=0; i--) { a[j]=s[i]-'0'; j++; } for(int i=0; i<dian; i++) { sum+=pow(2,i)*a[i]; } //cout<<sum<<endl; //处理小数部分 int k=1; for(int i=dian+1; i<len; i++) { sum+=pow(2,-k)*(s[i]-'0'); k++; } cout<<sum; } }