#include #include #include using namespace std; string FloatToAny(double number, int b); double AnyToFloat(string number, int b); int main() { for(int i = 2; i < 10; ++i) { double num = 1/ static_cast(i); for(int base = 2; base < 16; ++base) { string binaryRep = FloatToAny(num,base); cout << num << " = " << binaryRep << "_" << base << " = " << AnyToFloat(binaryRep,base) << endl; } cout << endl; } return 0; } int CharToDigit(char c) { if (c >= '0' and c <= '9') { return c-'0'; } else { return 10 + toupper(c)-'A'; } } char DigitToChar(int d) { if (d <= 9) { return d + '0'; } else { return (d-10)+'A'; } } double AnyToFloat(string number, int b) { double num{0}; double power {1/static_cast(b)}; for(size_t i = 1; i < number.length(); ++i) { int digit = CharToDigit(number[i]); num += digit * power; power /= static_cast(b); } return num; } string FloatToAny(double number, int b){ int digit{0}; string numberString{"."}; int limit = 0; while (number > 0 and limit < 10) { number *= b; digit = int(number); number = number - digit; numberString += DigitToChar(digit); limit ++; } if (numberString.length() == 1) { numberString = "0"; } return numberString; }