| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3491 人关注过本帖
标题:写函数时用double型正确用float型错误,同是小数我很郁闷!
只看楼主 加入收藏
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
结帖率:81.82%
收藏
已结贴  问题点数:10 回复次数:21 
写函数时用double型正确用float型错误,同是小数我很郁闷!
程序代码:
#include<stdio.h>
#define PI 3.141592
float circumference(double n)//          这段代码是正确的
                                         但如果把float circumference(double n)
                                         换成float circumference(float n)输出就出错了!
                                          我调试的的时候n的值带不过来,并不是float x的
                                          值3.2,而是0.

{
    return(2*PI*n);
}
float area(double n)//
{
    return(PI*n*n);
}
float comp(float x,float(*q)())
{
    double result;
    result=(*q)(x);
    return(result);
}
void main()
{
    float r=3.2,z,y;
    z=comp(r,circumference);
    y=comp(r,area);
    printf("circumference=%.3f\n",z);
        printf("area=%.3f\n",y);

}
搜索更多相关主题的帖子: double 
2016-08-29 11:24
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
吃过饭的大神们帮忙告知一下是什么原因导致的,谢谢了!
2016-08-29 11:25
向洪林
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:重庆市奉节县
等 级:版主
威 望:9
帖 子:118
专家分:405
注 册:2015-3-10
收藏
得分:0 
因为float n的精度和double的精度不一样,这样两个精度不一样的类型传值时会默认为0

新手上路,望大家多多照顾,谢谢!
2016-08-29 11:29
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 3楼 向洪林
但是我全用float还是输出为‘0’...
2016-08-29 11:33
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 3楼 向洪林
全用double就输出正确。。。
2016-08-29 11:33
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 

图片附件: 游客没有浏览图片的权限,请 登录注册

随手做的测试,想不到居然直接变0了。。。



[此贴子已经被作者于2016-8-29 11:40编辑过]


φ(゜▽゜*)♪
2016-08-29 11:37
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
回复 楼主 弟大勿勃
改了一下,很正常呀
#include<stdio.h>
#define PI 3.141592
float circumference(float n)//          这段代码是正确的
 
 {
     return(2*PI*n);
 }
float area(float n)//
{
     return(PI*n*n);
 }
float comp(float x,float q)
 {
     double result;
     result=x*q;
     return(result);
 }
 main()
 {
     float r=3.2,z,y;
     
     z=comp(r,circumference(r));
     y=comp(r,area(r));
     printf("circumference=%.3f\n",z);
         printf("area=%.3f\n",y);

 }
2016-08-29 12:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
因为你代码写得恶心
float(*q)(这里应该是个参数列表吧,为什么不写?)
2016-08-29 12:21
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 8楼 rjsp
我就是想用函数指针变量来调用相应的函数,
我神所说的这句话我没闹懂能详细点吗?
2016-08-29 13:33
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 7楼 ehszt
您这个面积计算就是2*PI*r*r了,貌似不对啊!
2016-08-29 13:35
快速回复:写函数时用double型正确用float型错误,同是小数我很郁闷!
数据加载中...
 
   



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

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