新人求教,CString转换成float类型数据失真如何解决啊

新人求教,CString转换成float类型数据失真怎么解决啊?
str = _T("362.15");
float temp1 =  _tstof(str);
结果temp1 = 362.14999

这个要怎么解决啊,网上找了好几种方法都没解决,求大神支招

------解决方案--------------------
CString str = _T("362.15");
int n1=str.Find(L".");
int n2=str.GetLength()-n1-1;
str=str.Left(n1)+str.Mid(n1+1);
float temp1 =  _tstof(str);
temp1=temp1/pow(10.0,n2);

我以为上面这种笨方法可以的,结果36215/100.0,一样变为了362.14999。看来无解了。用double也不行。

------解决方案--------------------
float f=362.15;
直接赋值后,你调试发现f的值也是362.14999。float里面根本就无法表达362.15这个数值。
------解决方案--------------------
尽量用double吧,基本上不影响计算。如果要转回字符串,一般会指定多少位小数点的,所以也不影响显示。
------解决方案--------------------
这个很难解决,如果是显示的话直接显示CString,计算的话也没有太大影响!