CString转换为double:
CString strFloat;
float flt;或double fit
不过前面两种方法在VS2005下运行结果不正确,在VC6.0开发环境下是可以的。
【说明:网上很多说的都是前两种方法,结果double值只是字符串的第一个数字。】
//方法一
flt = (float)atof((char *)(LPTSTR)(LPCTSTR)mstrFloat);
或flt = (float)atof((LPSTR)mstrFloat);
//方法二
flt = (float)atof((char *)m_eps.GetBuffer(strFloat.GetLength()));
strFloat.ReleaseBuffer();
//方法三
//Convert CString to double
static BOOL _AtlSimpleFloatParse(LPCTSTR lpszText, double& d)
{
ATLASSERT(lpszText != NULL);
while (*lpszText == ' '|| *lpszText == '/t')
{
lpszText++;
}
TCHAR chFirst = lpszText[0];
d = _tcstod(lpszText,(LPTSTR*)&lpszText);
if (d == 0.0 && chFirst != '0')
{
return FALSE; //could not convert
}
while (*lpszText == ' '|| *lpszText == '/t')
{
lpszText++;
}
if (*lpszText != '/0')
{
return FALSE; //not terminated properly
}
return TRUE;
}
另外,也可以这样:
const char* a;
a="123.5";
double b=atof(a);
//b==123.500000000000000
double转换为CString:
例子:CString a;
double b=123.5;
a.Format("%f",b);//int用%d,DWORD用%u,double,float用%f
//a=="123.5"