tianxiezhi 2015-11-06 05:49 采纳率: 50%
浏览 2919
已采纳

C++ double 变量与if 条件判断出错

大家好,请教下:if else 判断时出错不知何故,输入整数时是ok的,输入小数时却是错误的,不知问题出在哪儿,大家帮我指点指点
Dlg.m_strX1输入框的数据类型double

CAddJunDlg Dlg;
if (IDOK == Dlg.DoModal())
{
UpdateData();
//1.定义计数值
double A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30;

const float EPSINON = 0.00001;
if (fabs(Dlg.m_strX1) >= -EPSINON && fabs(Dlg.m_strX1) <= EPSINON)A1 = 0;//这种情况下判断等于零

else A1 = 1;
if (fabs(Dlg.m_strX2) >= -EPSINON && fabs(Dlg.m_strX2) <= EPSINON)A2 = 0;//这种情况下判断等于零

else A2 = 1;
if (fabs(Dlg.m_strX3) >= -EPSINON && fabs(Dlg.m_strX3) <= EPSINON)A3 = 0;//这种情况下判断等于零

else A3 = 1;
if (fabs(Dlg.m_strX4) >= -EPSINON && fabs(Dlg.m_strX4) <= EPSINON)A4 = 0;//这种情况下判断等于零

else A4 = 1;
if (fabs(Dlg.m_strX5) >= -EPSINON && fabs(Dlg.m_strX5) <= EPSINON)A5 = 0;//这种情况下判断等于零
else A5 = 1;
if (fabs(Dlg.m_strX6) >= -EPSINON && fabs(Dlg.m_strX6) <= EPSINON)A6 = 0;//这种情况下判断等于零

else A6 = 1;
if (fabs(Dlg.m_strX7) >= -EPSINON && fabs(Dlg.m_strX7) <= EPSINON)A7 = 0;//这种情况下判断等于零
else A7 = 1;
if (fabs(Dlg.m_strX8) >= -EPSINON && fabs(Dlg.m_strX8) <= EPSINON)A8 = 0;//这种情况下判断等于零

else A8 = 1;
if (fabs(Dlg.m_strX9) >= -EPSINON && fabs(Dlg.m_strX9) <= EPSINON)A9 = 0;//这种情况下判断等于零

else A9 = 1;
if (fabs(Dlg.m_strX10) >= -EPSINON && fabs(Dlg.m_strX10) <= EPSINON)A10 = 0;//这种情况下判断等于零
else A10 = 1;
if (fabs(Dlg.m_strX11) >= -EPSINON && fabs(Dlg.m_strX11) <= EPSINON)A11 = 0;//这种情况下判断等于零

else A11 = 1;

图片说明

  • 写回答

11条回答 默认 最新

  • flyasfish 2015-11-06 06:45
    关注

    代码有不少垃圾:
    fabs(Dlg.m_strX1) >= -EPSINON
    这个条件永远都是TRUE

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(10条)

报告相同问题?

问题事件

  • 已采纳回答 11月5日