标题:关于浮点定义
取消只看楼主
min624132806
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2017-2-20
结帖率:50%
已结贴  问题点数:8 回复次数:2 
关于浮点定义
#include <stdio.h>
int main (void)
{
    int a,b;
    float x,y;
    a=1,b=5;
    printf("x=");
    scanf("%f",&x);
    y=x>=-10?-a*(b+x):3/((a*a*a+x*x*x)*b);
    printf("%f\n",y);
    printf("%f\n",x<-10?3/((a*a*a+x*x*x)*b):-a*(b+x));
    return 0;
}


类型                位数           有效数字                 取值
 
float               32               6~~7             -1.4e-45~~3.14e38

double              64               15~~16            -4.9e-324~~1.8e308

long double         128              18~~19             ----------


X取值不限,可能在double 范围内取值,就应该定义为double类型,在long double中取值就应该定义为long double ,longdouble取值范围包括float double 取值范围,按理应该定义为long double类型,
为什么X,Y不能定义为double和long double ,定义为这任意类型运算结果会出错。
搜索更多相关主题的帖子: include return 
2017-03-02 22:21
min624132806
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2017-2-20
得分:0 
回复 2楼 wp231957
用long double和float 的运算结果,不一致这是为什么?
2017-03-03 22:35
min624132806
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2017-2-20
得分:0 
回复 7楼 wp231957
#include <stdio.h>
int main (void)
{
    int a,b;
    float x,y;
    a=1,b=5;
    printf("x=");
    scanf("%f",&x);
    y=x>=-10?-a*(b+x):3/((a*a*a+x*x*x)*b);
    printf("%f\n",y);
    printf("%f\n",x<-10?3/((a*a*a+x*x*x)*b):-a*(b+x));
    return 0;
}


#include <stdio.h>
int main (void)
{
    int a,b;
    double x,y;
    a=1,b=5;
    printf("x=");
    scanf("%f",&x);
    y=x>=-10?-a*(b+x):3/((a*a*a+x*x*x)*b);
    printf("%f\n",y);
    printf("%f\n",x<-10?3/((a*a*a+x*x*x)*b):-a*(b+x));
    return 0;
}

只是两个程序代码,不同在于X,Y定义类型不同,第一个程序用float,类型输出结果正常,第二个用的double类型结果却是0,这是为什么,请给我一个误区的解释,谢谢!
2017-03-09 21:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-474704-1-1.html




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

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