単純に、コピペしてみたら・・・・上手く表示されないな。。。これから慣れて行こう。
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
//関数プロトタイプ宣言
double binaryToDecimal(string);
int main(){
string binary;
cout << “Enter a binary number: “; cin >> binary;
double decimal = binaryToDecimal(binary);
cout << "Decimal equivalent: " << decimal << endl;
return 0;
}
//2進数の小数を10進数に直す関数本体
double binaryToDecimal(string binary){
double decimal = 0.0;
int integerPart = 0;
double fractionalPart = 0.0;
bool isFractionalPart = false;
//整数部と小数部を分類して処理
for(int i = 0; i < binary.length(); i++){
if(binary[i] == '.'){
isFractionalPart = true;
continue;
}
if(!isFractionalPart){
integerPart = integerPart * 2 + (binary[i] - '0');
}else{
fractionalPart = fractionalPart / 2 + (binary[i] - '0')/ 2.0;
}
}
decimal = integerPart + fractionalPart;
return decimal;
}