| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1300 人关注过本帖
标题:关于浮点定义
只看楼主 加入收藏
min624132806
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2017-2-20
结帖率:50%
收藏
已结贴  问题点数:8 回复次数:8 
关于浮点定义
#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
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
回复 楼主 min624132806
只要你不嫌浪费空间  你可以把所有的浮点型都定义为long double  

DO IT YOURSELF !
2017-03-03 06:34
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:2 
听不懂
2017-03-03 08:22
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:2 
回复 3楼 rjsp
long double 占的内比较大。、、
2017-03-03 21:31
min624132806
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2017-2-20
收藏
得分:0 
回复 2楼 wp231957
用long double和float 的运算结果,不一致这是为什么?
2017-03-03 22:35
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:2 
以下是引用min624132806在2017-3-3 22:35:48的发言:

用long double和float 的运算结果,不一致这是为什么?

1、试试用 %lf 或 %llf 输入输出。
2、注意运算过程和运算结果的数据类型,必要时可强制转换。
2017-03-04 05:56
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用min624132806在2017-3-3 22:35:48的发言:

用long double和float 的运算结果,不一致这是为什么?
你这么说 谁也不知道咋回事  可能一切根源都在于你的。。。。。

编写代码  一切都要用代码来说话

DO IT YOURSELF !
2017-03-04 08:03
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
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:2 
第二个程序改scanf("%lf",&x);也许是单浮点型和双浮点型的存储和读取方式不一样。

[此贴子已经被作者于2017-3-9 21:57编辑过]

2017-03-09 21:55
快速回复:关于浮点定义
数据加载中...
 
   



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

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