I'm doing a dialog application in C++ to calculate something, but I want the result to be with 2 decimal number, how to do this?

here is the function:

``````void CCalculatorDlg::Oncalc()
{

UpdateData(TRUE);

if ((m_amostras >= 1) && (m_elementos >= 1) && (m_click == true))
{
if (m_interno)
m_total = (19.8522+(3.99038*(m_elementos-1))+((1.74579+((m_elementos-1)*0.1496))*(m_amostras-1))) + (2.5*m_preparacao);
else if (m_externo)
{
if (m_amostras < 11)
m_total = (19.9519+(19.9519*(m_elementos-1))+((19.9519+((m_elementos-1)*2.494))*(m_amostras-1)))+(5*m_preparacao);

if (m_amostras > 10)
m_total = (19.9519+(19.9519*(m_elementos-1))+(((19.9519+((m_elementos-1)*2.494))*(9))+((9.98+((m_elementos-1)*2.494))*(m_amostras-10))))+(5*m_preparacao);
}
}
else
{
if ((m_amostras < 1) || (m_elementos < 1))
MessageBox("Tem que especificar pelo menos uma amostra e um elemento!");

if (!m_click)
MessageBox("Tem que especificar o tipo de cliente!");
}

UpdateData(FALSE);

}``````

I want the variable m_total to show with 2 decimal numbers, like, p.e. x,yz.

Thanks

Look in setprecision manipulator

But I'm not using cout... The variable m_total is shown at the dialog box in an edit box...

you will have to format the string before it is displayed in the dialog box. If you are using MFC, then use CString's Format() method, for exaple

``````CString text;
float number = 12.123456;
text.Format("%.2f", number);
GetDialogItem(IDC_EDI1)->SetWindowText(text);``````

If you are not using MFC, then use standard C sprintf() function

``````char text[20];
float number = 12.123456;
sprintf(text,"%.2f", number);
GetDialogItem(IDC_EDI1)->SetWindowText(text);``````

I'm using MFC and I tried your exmeple but I get this:

``````--------------------Configuration: calculator - Win32 Release--------------------
Compiling...
calculatorDlg.cpp
D:\vários\mail\calculator\calculatorDlg.cpp(201) : error C2065: 'GetDialogItem' : undeclared identifier
D:\vários\mail\calculator\calculatorDlg.cpp(201) : error C2227: left of '->SetWindowTextA' must point to class/struct/union
Error executing cl.exe.

calculator.exe - 2 error(s), 0 warning(s)``````

:sad: Can you figure out why?
thanks

Sorry about the mistake. Should have been GetDlgItem

Alternatively, if you used ClassWizard to assign a CString variable to the edit control, then you don't need to call GetDlgItem() but use that variable instead, then call UpdateData(FALSE) to update the edit control.

If you are new to MFC and you are using VC++ 6.0 compiler you might want to read the Microsoft Scribble tutorial, which will show you how to do all that neat stuff.

Sorry about the mistake. Should have been GetDlgItem

Alternatively, if you used ClassWizard to assign a CString variable to the edit control, then you don't need to call GetDlgItem() but use that variable instead, then call UpdateData(FALSE) to update the edit control.

I've used the alternative you gave me and it works :)