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() 
{
	// TODO: Add your control notification handler code here
	
	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

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 :)
thanks for your attention.

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.

This link it's in my bookmarks :cheesy:
thanks again

This article has been dead for over six months. Start a new discussion instead.