C++ 2進数の小数を10進数で表す。

C++

単純に、コピペしてみたら・・・・上手く表示されないな。。。これから慣れて行こう。

#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;

}

タイトルとURLをコピーしました