20个“数字”字符串转换为数字后再还原为字符?
x:='91233454565546546566';
strtofloat后,再次显示用floattostr,结果为科学计数法的字符串
我需要还原为:'91233454565546546566'怎么办?
x:='91233454565546546566';
strtofloat后,再次显示用floattostr,结果为科学计数法的字符串
我需要还原为:'91233454565546546566'怎么办?
^_^
如果有小数点的话就自己写转换程序了,主要是记住小数点的位置就行了。
begin
x:='91233454565546546566';
x1:=floattostr(strtofloat(x)/math.Power(10,17)-trunc(strtofloat(x)/math.Power(10,17)));
x1:=copy(x1,3,length(x1)-2);
x2:=inttostr(trunc(strtofloat(x)/math.Power(10,17)));
showmessage(x2+x1);
format('%f',[x]);
转为字符
format('%s',[x]);
{
uChar* pFirstHeader, *pSecondHeader;
uChar number, i, tmpNum, tmpStr[20];
sInt4 lenth;
Float intValue = 0;
Float floatValue = 0.0; lenth = Xstrlen(pStr);
//为确保字符串的第一个字节不是空格也不是空字符串
while ( ( (*pStr == 32) || (*pStr == 48) ) && (lenth--) )
pStr ++;
if (*pStr == 0)
return 0.0;
pFirstHeader = pStr;
while (*pStr != '.' && *pStr >= 48 && *pStr <=57 && *pStr != 0)
{
pStr++;
}
pSecondHeader = pStr;
//计算出整数部分的字符个数
number = pSecondHeader - pFirstHeader;
for (i = 0; i<number; i++)
{
tmpNum = *pFirstHeader++ -48;
intValue = intValue + tmpNum * XjinglePow(10, number - i - 1);//
}
i = 0;
if (*pSecondHeader == 46)
{
pSecondHeader++;
while (*pSecondHeader != 0 && *pSecondHeader != 32 && *pSecondHeader >= 48 && *pSecondHeader <=57)
{
tmpNum = *pSecondHeader -48;
floatValue = floatValue + tmpNum * Power(10, -i-1);//
pSecondHeader++;
i++;
}
}
floatValue = (tReal8)intValue + floatValue;
return floatValue;
}