| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1618 人关注过本帖
标题:if()中的判断条件为什么被判断不通过
只看楼主 加入收藏
想飞更高的鸟
Rank: 2
等 级:论坛游民
威 望:1
帖 子:11
专家分:31
注 册:2014-4-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
if()中的判断条件为什么被判断不通过
int main()
{
    float a=3.2;
    float b=1.5;
        cout<<b*a<<endl;
    if(a*2+b*3==10.9)
    printf("对了");
}

为什么,不能输出“对了”

头文件都已经加了
2014-04-09 17:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
浮點數不能用==判斷,拜託你們都仔細看了書再寫代碼撒!

授人以渔,不授人以鱼。
2014-04-09 17:17
想飞更高的鸟
Rank: 2
等 级:论坛游民
威 望:1
帖 子:11
专家分:31
注 册:2014-4-9
收藏
得分:0 
回复 2楼 TonyDeng
谢谢
2014-04-09 17:20
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
收藏
得分:0 
可以比较变量

因为有你,所以做什么都有动力。z,爱你。
2014-04-09 17:30
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
收藏
得分:0 
况且你的代码是不正确,既有c语言,却又用C++里的cout语句。。cout是输出语句。况且你的表达式结果还是错的。。用C修改如下
程序代码:
#include<stdio.h>
int main()
{
    float a=3.2,b=1.5,c=10.9;
    if(a*2+b*3==c)
    {
        printf("对了");
    }
    else
        printf("错了");
    return 0;
}


因为有你,所以做什么都有动力。z,爱你。
2014-04-09 17:41
想飞更高的鸟
Rank: 2
等 级:论坛游民
威 望:1
帖 子:11
专家分:31
注 册:2014-4-9
收藏
得分:0 
回复 5楼 安宁1991
当时我只是测试了一下,所以就复制过来了,不过还是谢了
2014-04-09 18:04
loveClangage
Rank: 8Rank: 8
来 自:广东云浮
等 级:蝙蝠侠
帖 子:326
专家分:891
注 册:2013-8-23
收藏
得分:0 
只有0 和 1

编写的程序,不能改变世界,却可以改变自己...
2014-04-09 19:22
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
收藏
得分:0 
if((a*2+b*3-10.9)<0.001)
这样就可以了,float和double不能直接判断相等的,因为精度问题,

2014-04-10 11:36
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:0 
数据类型的。。。。

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2014-04-10 15:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
确保你没有使用“为了效率允许精度不一致”等编译选项,确保你没有使用“使用SSE而非80387(x64默认用SSE)”等编译选项

程序代码:
#include <iostream>
using namespace std;

int main( void )
{
    float a = 3.2f; // 3.2000000476837158203125
    float b = 1.5f; // 1.5

    float tmp1 = a*2+b*3; // 10.8999996185302734375
    double tmp2 = a*2+b*3; // 10.900000095367431640625

    if( a*2+b*3 == 10.900000095367431640625 )
        printf("对了\n");

    return 0;
}

2014-04-10 16:08
快速回复:if()中的判断条件为什么被判断不通过
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017831 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved