小白一个,想做一个MFC计算器,例如,我输入一个5+3,两个输入和一个输出的变量是double型,比如精确到小数点后6位,那么输出的时候就成了8.000000,但我想输出8,这个当结果是整数时可以用一个判断来做到:
if (a[0]-int(a[0])==0)
{
m_strResult.Format("%d", int(a[0]));
}
但如果输入1/4这种,结果是0.25,正常输出就变成了了0.250000,但我想要输出0.25,我想了一个for循环判断小数非零的位数加switch来解决,但调试时发现只要结果是小数,不管怎么样,最后的输出都是输出小数点后五位,m_strResult是MFC编辑框的变量,CString型
else
{
m_strResult1.Format("%lf", a[0] - int(a[0]));
for (int i = m_strResult1.GetLength(); i >1; i--)
{
if (m_strResult1.GetAt(i) != 0)
break;
n--;
}
switch (n)
{
case 1:
m_strResult.Format("%.1lf", a[0]);
break;
case 2:
m_strResult.Format("%.2lf", a[0]);
break;
case 3:
m_strResult.Format("%.3lf", a[0]);
break;
case 4:
m_strResult.Format("%.4lf", a[0]);
break;
case 5:
m_strResult.Format("%.5lf", a[0]);
break;
case 6:
m_strResult.Format("%.6lf", a[0]);
break;
default:
break;
}
}