| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4414 人关注过本帖
标题:1除以2能得到0.5吗?
只看楼主 加入收藏
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:2 
回复 10楼 google天下
那样本来就是0.000000,他这样写是回复一个同学的那句话:“把结果定义成double型就可以了,”
只定义结果为double型而不去考虑式子中数字的类型是不对的,
如果两个数字都是整形,那么他们的结果就是整形,接着计算机看结果被定义成了double型,那么就在这个整形的结果后面加了个.000000,这就是为什么结果是0.000000了
2012-03-26 01:14
zcxuexi
Rank: 2
等 级:论坛游民
帖 子:14
专家分:18
注 册:2012-3-21
收藏
得分:2 
回复 5楼 zklhp
五楼的方法不行啊
2012-03-26 10:15
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:2 
就是类型问题丶好好看看书

编程之路定要走完……
2012-03-26 10:18
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
回复一下 我上面特意问

double a = 1 / 2;

就是想说 把结果放浮点型数里是没有用的

严格来讲 楼主问的这个问题 1 除以 2 ( 也就是C里面的 (1/2))应该是不能得到0.5的 这个不难理解啊 两个整形数整除运算应该还是整形 肯定不会自动变成一个浮点数

总结一下 代码说话

    double a = 0.0;
    printf("1/2=%f\n",1 / 2);                    //等于0.0
    printf("1.0/2=%f\n",1.0 / 2);                //等于0.5
    printf("1/2.0=%f\n",1 / 2.0);                //等于0.5
    printf("1.0/2.0=%f\n",1.0 / 2.0);            //等于0.5
   
    printf("(double)1/2=%f\n",(double)1 / 2);    //等于0.5
    a = 1 / 2;
    printf("double a = 1/2 结果%f\n",a);            //等于0.0


[ 本帖最后由 zklhp 于 2012-3-26 10:54 编辑 ]
2012-03-26 10:48
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
一个简单的问题 答案可不简单 要明白这个 得对C或者说是计算机里面数的表示方法有深刻的理解才行

刚才的测试是VC2008随手写的 gcc应该也这样罢
2012-03-26 10:50
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
我再问个

printf("(double)(1/2)=%f\n",(double)(1 / 2));

你们说等于几 和上面我打的那个有啥区别呢???

呵呵 琢磨琢磨罢
2012-03-26 10:52
w339735126
Rank: 2
等 级:论坛游民
帖 子:18
专家分:24
注 册:2012-3-15
收藏
得分:2 
回复 16楼 zklhp
版主;你这个应该输出的也是0.00000吧。
(double)(1/2)是不是就是(double)(0)啊?
(double)1/2  和1.0/2  在结果看来是一个同一个吧?
求解释。
2012-03-26 11:47
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用w339735126在2012-3-26 11:47:35的发言:

版主;你这个应该输出的也是0.00000吧。
(double)(1/2)是不是就是(double)(0)啊?
(double)1/2  和1.0/2  在结果看来是一个同一个吧?
求解释。

正解

这也论证了我上面说的 1/2 怎么算都不是0.5
2012-03-26 11:48
w339735126
Rank: 2
等 级:论坛游民
帖 子:18
专家分:24
注 册:2012-3-15
收藏
得分:0 
........
2012-03-26 12:34
raojiayu
Rank: 2
等 级:论坛游民
帖 子:5
专家分:12
注 册:2012-3-22
收藏
得分:2 
只要定义变量的时候定义成浮点型就行了、、、
2012-03-26 20:14
快速回复:1除以2能得到0.5吗?
数据加载中...
 
   



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

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