Basic doubt
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
gampalu
Junior Poster in Training
78 posts since Mar 2006
Reputation Points: 21
Solved Threads: 0
Look in setprecision manipulator
But I'm not using cout... The variable m_total is shown at the dialog box in an edit box...
gampalu
Junior Poster in Training
78 posts since Mar 2006
Reputation Points: 21
Solved Threads: 0
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);
Ancient Dragon
Retired & Loving It
30,049 posts since Aug 2005
Reputation Points: 5,662
Solved Threads: 2,343
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
gampalu
Junior Poster in Training
78 posts since Mar 2006
Reputation Points: 21
Solved Threads: 0
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.
Ancient Dragon
Retired & Loving It
30,049 posts since Aug 2005
Reputation Points: 5,662
Solved Threads: 2,343
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
gampalu
Junior Poster in Training
78 posts since Mar 2006
Reputation Points: 21
Solved Threads: 0