CString str(_T("256354213.82"));
double dVal = atof(str.GetBuffer(str.GetLength());结果显示dVal = 256354213.82000000请问有什么办法可以使CString转换成double的时候,double的数据只会精确到小数点后两位?
double dVal = atof(str.GetBuffer(str.GetLength());结果显示dVal = 256354213.82000000请问有什么办法可以使CString转换成double的时候,double的数据只会精确到小数点后两位?
cstring s;
double age =(double)atof((char *)(LPTSTR)(LPCTSTR) s);
double dVal = atof(str.GetBuffer(str.GetLength());
转化后
结果显示dVal = 256354213.81999999
在我机器上显示 256354213.81999999
你用的是UNICODE吧,把atof改成_ttof。
LZ的问题应该并不是CString转换为double的精度问题,而是转换为double后显示的精度位数问题。即使你直接使用
double dd = 256354213.82;
最后得到的也是256354213.81999999(VS2010)。
而使用 double dd = 1; VS的监视器里的值也是1.0000000000000000,它并不表示精度就是这么多位,只是一种显示方式而已。