初级会员

- 积分
- 191
- 金钱
- 191
- 注册时间
- 2014-2-11
- 在线时间
- 14 小时
|
发表于 2017-10-27 23:19:41
|
显示全部楼层
在C++中 浮点数转换为字符串的应用
[mw_shl_code=cpp,true]class FString
{
public:
char fstr[20];
FString(): fstr({0}) {}
~FString(){}
explicit FString(double data, int decm = 3){
int i,j,k,l;
long temp, tempoten;
uint8_t intpart[20], dotpart[20]; // 数的整数部分和小数部分
//1.确定符号位
if(data < 0) {fstr[0]='-'; data = -data; l = 0;}
else {fstr[0]='+'; l = -1;}
//2.确定整数部分
temp = (long)data;
i = 0;
tempoten = temp / 10;
while(tempoten != 0)
{
intpart = temp - 10 * tempoten + 48; //to ascii code
temp = tempoten;
tempoten = temp/10;
i++;
}
intpart = temp + 48;
//3.确定小数部分,取了decm位小数
data = data - (long)data;
for(j = 0; j < decm; j++)
{
dotpart[j] = (int)(data*10) + 48;
data = data * 10.0;
data = data - (long)data;
}
//4.数据组装
for(k = 1; k <= i+1; k++) fstr[k+l] = intpart[i+1-k];
fstr[i+2+l] = '.';
for(k = i + 3;k < i+j+3; k++) fstr[k+l] = dotpart[k-i-3];
fstr[i+j+3+l] = 0x0D;
}
operator const char*() const { return fstr; }
};
#define FDS(V, D) FString(V, D)
#define FS(V) FString(V)[/mw_shl_code]
|
|