关于EXCEL表格以字符串方式提取时不能提取小数

关于EXCEL表格以字符串形式提取时不能提取小数
CString ExcelFile::GetCellString(long irow, long icolumn)
{
   
    COleVariant vResult;
    CString str;
    //字符串
    if (already_preload_ == FALSE)
    {
        CRange range;
        range.AttachDispatch(excel_current_range_.get_Item (COleVariant((long)irow),COleVariant((long)icolumn)).pdispVal, true);
        vResult =range.get_Value2();
        range.ReleaseDispatch();
    }
    //如果数据已经被整体提取
    else
    {
        long read_address[2];
        VARIANT val;
        read_address[0] = irow;
        read_address[1] = icolumn;
        read_array_.GetElement(read_address, &val);
        vResult = val;
    }

    if(vResult.vt == VT_BSTR)
    {
        str=vResult.bstrVal;
    }
    //整数
    else if (vResult.vt==VT_INT)
    {
        str.Format("%d",vResult.pintVal);
    }
    //8字节的数字 
    else if (vResult.vt==VT_R8)     //从表格中不能提取小数,为什么?0.25提出来就是1
    {
       // float a;
//a = vResult.dblVal;
//char b[50];
//gcvt(vResult.dblVal,8,b);
//str = b;
str.Format("%0.0f",vResult.dblVal);
    }
    //双精度的数字
//else if (vResult.vt==VT_R8)

//时间格式
    else if(vResult.vt==VT_DATE)    
    {
        SYSTEMTIME st;
        VariantTimeToSystemTime(vResult.date, &st);
        CTime tm(st); 
        str=tm.Format("%Y-%m-%d");

    }
    //单元格空的
    else if(vResult.vt==VT_EMPTY)   
    {
        str="";
    }  

    return str;
}


------解决思路----------------------
%.15lg