Думаю что по другому не получится. Запоминай результат, форматируй его в стринге и потом ставь стринг в эдит. Дело в том что UpdateData приводит к вызову соответствующей функции DDX_Text. А она вызывает подходящую AfxText.... В твоем случай для агумента float будет вызвана
void AFXAPI AfxTextFloatFormat(CDataExchange* pDX, int nIDC,void* pData, double value, int nSizeGcvt)
(файл ....\Microsoft Visual Studio\VC98\MFC\SRC\DLGFLOAT.CPP)
Код:
void AFXAPI AfxTextFloatFormat(CDataExchange* pDX, int nIDC,
void* pData, double value, int nSizeGcvt)
{
ASSERT(pData != NULL);
HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC);
TCHAR szBuffer[32];
if (pDX->m_bSaveAndValidate)
{
::GetWindowText(hWndCtrl, szBuffer, _countof(szBuffer));
double d;
if (!_AfxSimpleFloatParse(szBuffer, d))
{
AfxMessageBox(AFX_IDP_PARSE_REAL);
pDX->Fail(); // throws exception
}
if (nSizeGcvt == FLT_DIG)
*((float*)pData) = (float)d;
else
*((double*)pData) = d;
}
else
{
_stprintf(szBuffer, _T("%.*g"), nSizeGcvt, value);
AfxSetWindowText(hWndCtrl, szBuffer);
}
}
Как видишь формат вполне определенный....