Я использую приложение калькулятора счета за электроэнергию в VS 2010, используя приложение MFC.
Программа работает, но я не могу распечатать результат в float.
Это мой код расчета:
void CLAB10Dlg::OnBnClickedTotal()
{
float num1;
float result;
num1 = GetDlgItemInt(IDC_NUM1);
CButton* domesticButton = (CButton*)GetDlgItem(IDC_DOMESTIC);
CButton* industrialButton = (CButton*)GetDlgItem(IDC_INDUSTRIAL);
CButton* commercialButton = (CButton*)GetDlgItem(IDC_COMMERCIAL);
if(domesticButton -> GetCheck())
{
result = 31.66 * num1;
SetDlgItemInt(IDC_RESULT,result);
}
else if(industrialButton -> GetCheck())
{
result = 36.15 * num1;
SetDlgItemInt(IDC_RESULT,result);
}
else if(commercialButton -> GetCheck())
{
result = 47.92 * num1;
SetDlgItemInt(IDC_RESULT, result);
}
}
например, my num1
= 1.
result = 31.66 * num1
результат = 31
Где я должен изменить, чтобы распечатать result
в float.
SetDlgItemInt устанавливает текст управления в целое число без знака и, таким образом, преобразует ваше значение float в целое число без знака.
Вам лучше использовать SetDlgItemText для визуализации вашего значения float, например
CString text;
text.Format(_T("%f", result); // This will preserve your float format
SetDlgItemText(IDC_RESULT, text);
CString text;
text.Format(_T("%f"), result); // This will preserve your float format
SetDlgItemText(IDC_RESULT, text);
Вы пропустили скобу.
SetDlgItemText()
и выполнять преобразования сfloat
в строку и наоборот.