用C++实现一个简单的进制转换程序(包含小数)
话不多说先上代码
```cpp
#include <iostream>
#include <string>
#include "temple.h"
using namespace std;
int main() {
long double a=1000;
string result = formate(a,64);
cout<<result;
}
```cpp
//这里是头文件
using namespace std;
string formate(long double a, int b){
//a,b 作为参数a为10进制数,b是目标进制
//作为常量,记录储存值
static char str[100] ={"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"};
string result = ""; // 用于储存结果字符串
try {
if(b <= 1 ||b > 64) throw "进制错误";//由于最大支持64进制,并且排除0等错误进制
int c = 0; //用于储存余数
int n = (int)a;
do{
c = n%b;
n = n/b;
result=str[c]+result;
} while (n);
if(!(a-(int)a))
return result;
result = result+'.';
int clock = 0;//防止无限循环
do{
if(clock>=10) return result;
a = a-(int)a;
a = a*b;
n = (int)(a);
result+=str[n];
clock++;
} while (a);
return result.substr(0, result.length() - 1); //去除多余的一位
}
catch (...){
return "进制错误";
}
}
//result=str[c]+result;
注意第一个while中的这句,切记不要写反,写反后,会发生整数部分相反的情况,再写反转函数影响效力率,会多产生string对象。
小数部分无需反转,所以。。。