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

问题描述

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;

解决方案

C++ if条件判断

解决方案二:

直接打印一下出来看你输入的数据和程序获取的数据,if 怎么判断的

解决方案三:

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

解决方案四:

你先看看运算符的优先级,在看看你的判断表达式是不是按你的意思计算的。

解决方案五:

楼上可否帮我修改下代码啊,谢谢!

解决方案六:

也做过这样的测试,仍然不行
if (fabs(Dlg.m_strX1) < 0.0001 && fabs(Dlg.m_stru1) < 0.0001) A1 = 0;//
else A1 = 1;

    if (fabs(Dlg.m_strX2) < 0.0001 && fabs(Dlg.m_stru2) < 0.0001) A2 = 0;
    else A2 = 1;

    if (fabs(Dlg.m_strX3) < 0.0001 && fabs(Dlg.m_stru3) < 0.0001) A3 = 0;
    else A3 = 1;

    if (fabs(Dlg.m_strX4) < 0.0001 && fabs(Dlg.m_stru4) < 0.0001) A4 = 0;
    else A4 = 1;

    if (fabs(Dlg.m_strX5) < 0.0001 && fabs(Dlg.m_stru5) < 0.0001) A5 = 0;
    else A5 = 1;

    if (fabs(Dlg.m_strX6) < 0.0001 && fabs(Dlg.m_stru6) < 0.0001) A6 = 0;
    else A6 = 1;

    if (fabs(Dlg.m_strX7) < 0.0001 && fabs(Dlg.m_stru7) < 0.0001) A7 = 0;
    else A7 = 7;

    if (fabs(Dlg.m_strX8) < 0.0001 && fabs(Dlg.m_stru8) < 0.0001) A8 = 0;
    else A8 = 1;

    if (fabs(Dlg.m_strX9) < 0.0001 && fabs(Dlg.m_stru9) < 0.0001) A9 = 0;
    else A9 = 1;

    if (fabs(Dlg.m_strX10) < 0.0001 && fabs(Dlg.m_stru10) < 0.0001) A10 = 0;
    else A10 = 1;

    if (fabs(Dlg.m_strX11) < 0.0001 && fabs(Dlg.m_stru11) < 0.0001) A11 = 0;
    else A11 = 1;

解决方案七:

。。还没调好呢。。
你下面贴的代码有笔误:
else A7 = 7;
象这种小错误,如果你不把代码贴全了,很难找到哪里出错了。
1、 m_strX1、m_stru1等是不是都是double类型?
2、你用的变量太多,稍不留意就会出错。认真查查。

如果你代码不涉及保密,可以发给我,我帮你看看。

解决方案八:

好啊,留个邮箱给我吧,我是vs2015编译的,谢谢!

解决方案九:

都以为您没时间看了!

解决方案十:

m_strX1、m_stru1等都是double类型,想做的事情很简单的,就是有数据输入时就计数为1,反之则计数为零,因为后续平均值计算时,会用到这个计数值;或是有更好的处理方式?比如我输入了10组数据,平均值时就除以10,输入了20组数据求平均值时就除以20.

时间: 2024-11-05 06:25:15

c++-C++ double 变量与if 条件判断出错的相关文章

用包含变量x的一个表达式实现:x&amp;amp;gt;0时结果为1,x=0结果为0,不要条件判断

问题描述 用包含变量x的一个表达式实现:x>0时结果为1,x=0结果为0,不要条件判断 用包含变量x的一个表达式实现:x>0时结果为1,x=0结果为0,不要条件判断. 可使用任意数学函数 解决方案 ?:当然是最容易想到的,但是这种回答没有任何帮助到你,肯定你也知道. 不知道什么语言,VB有Sign函数,>0返回1,=0返回0,<0返回-1 C++可以用 (int)(x > 0),原理是x>0返回true,转换成int是1 #include <iostream>

&amp;#106avascript里的条件判断

条件     JavaScript 是一种可以在浏览器中运行的脚本语言,是一种弱语言(相对于C,C#,JAVA而言),只要是计算机语言就会使用到条件判断式,而JavaScript作为一种"弱"语言,它的条件判断常常令人困惑不解,特别是有其它强语言编程经历的人来说,更是不可理喻!高手和无惑的人别取笑,我自己也曾经有一段时间郁闷过.先写一个例子吧: var s = "meizz";if (s && s==true){    alert("Is

javascript里的条件判断

javascript|条件     JavaScript 是一种可以在浏览器中运行的脚本语言,是一种弱语言(相对于C,C#,JAVA而言),只要是计算机语言就会使用到条件判断式,而JavaScript作为一种"弱"语言,它的条件判断常常令人困惑不解,特别是有其它强语言编程经历的人来说,更是不可理喻!高手和无惑的人别取笑,我自己也曾经有一段时间郁闷过.先写一个例子吧: var s = "meizz";if (s && s==true){    aler

Bash条件判断

每个完整并且合理的程序语言都具有条件判断的功能,并且可以根据条件测试的结果做下一步的处理.Bash有test命令.各种中括号和圆括号操作,和if/then结构. 条件测试 if/then结构用来判断命令列表的退出状态码是否为0. 有一个专有命令[ (左中括号,特殊字符).这个命令与test命令等价,并且出于效率上的考虑,这是一个内建命令.这个命令把它的参数作为比较表达式或者作为文件测试,并且根据比较的结果来返回一个退出状态码(0 表示真,1表示假). if [ 0 ] then echo "0

vb net-VB.NET2010:删除单元格数据时条件判断语句报错

问题描述 VB.NET2010:删除单元格数据时条件判断语句报错 VB.NET2010表格DataGridView2_CellValidating事件中 If e.RowIndex >= 0 And IIf(IsDBNull(DataGridView2.CurrentCell.Value)" DataGridView2.CurrentCell.Value) <> e.FormattedValue Then... 当我删除当前单元格内容时,如果针对字符型字段OK,但是针对数值型字

php-多个逻辑或运算符和比较运算符一起使用共同作为条件判断的问题

问题描述 多个逻辑或运算符和比较运算符一起使用共同作为条件判断的问题 <?php $username = "gaolf"; $password = "123456"; $email = "gaolf@brophp.com"; $phone = "010-7654321"; if( $username == "gaolf" && $password == "123456&quo

shell编程中if [[ ! ${a} =~ ^[0-9]+ ]]条件判断式如何工作的?

问题描述 shell编程中if [[ ! ${a} =~ ^[0-9]+ ]]条件判断式如何工作的? if [[ ! ${a} =~ ^[0-9]+ ]]这个语句具体是怎么工作的?我只知道这个好像是如果变量a不是以数字开头就执行if语句,但是特别的: =~是什么意思? ^[0-9]+ 是什么意思?另外这个判断使用的是扩展正则表达式? 解决方案 这里只有^[0-9]+是正则表达式,表示一个数字,别的都不是正则. 解决方案二: 只是原样的字符 解决方案三: =~意思是匹配后面的正则式,^是匹配开头,

dos if 条件判断_DOS/BAT

1.判断驱动器.文件或文件夹是否存在,用 if exist 语句: 2.判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句: 3.判断某两个数值是否相等,用 if 数值1 equ 数值2 语句: 4.判断某个变量是否已经被赋值,用 if defined str 语句: if语句的完整格式是这样的:if 条件表达式 (语句1) else (语句2),它的含义是:如果条件表达式成立,那么,就执行语句1,否则,将执行语句2. 对于以上四种情形,可以分别

条件判断与条件预处理

问题描述 条件判断与条件预处理 BYTE gIsNonContact: #define ISNONCONTACT(a) (a)?TRUE:FALSE 条件判断: if(ISNONCONTACT(gIsNonContact)) 语句a: else 语句b; 预处理: #if(ISNONCONTACT(gIsNonContact)) 语句a: #else 语句b; #endif 假如gIsNonContact赋为真,在条件判断执行语句a,怎么在预处理中却执行语句b呢?如果要由变量控制条件预处理有没有