|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ C语言float换成double的问题
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
934
人关注过本帖
标题:
C语言float换成double的问题
只看楼主
加入收藏
d1501100204
等 级:
新手上路
帖 子:2
专家分:0
注 册:2015-12-29
结帖率:
0
楼主
收藏
已结贴
√
问题点数:16 回复次数:4
C语言float换成double的问题
#include<stdio.h>
void main()
{
float a=123.45;
printf("%f",a);
}
为什么这个程序的执行结果是123.449997而不是123.450000呢?
将float换成double后结果就是123.450000,这是为什么?
搜索更多相关主题的帖子:
double
C语言
2015-12-29 17:52
举报帖子
使用道具
赠送鲜花
rjsp
等 级:
版主
威 望:
528
帖 子:9025
专家分:54030
注 册:2011-1-18
第
2
楼
收藏
得分:0
float/double 这些叫“浮点数”,不叫“实数”,
在理论上就没有任何有限的资源可以表示无限的状态
float(123.45) 其实表示的是实数 123.4499969482421875
double(123.45) 其实表示的是实数 123.4500000000000028421709430404007434844970703125
收到的鲜花
pycansi
于
2016-01-01 19:46
送鲜花
10朵 附言:好
2015-12-30 10:34
举报帖子
使用道具
赠送鲜花
d1501100204
等 级:
新手上路
帖 子:2
专家分:0
注 册:2015-12-29
第
3
楼
收藏
得分:0
回复 2楼 rjsp
谢谢
,虽然还是有点模糊
2015-12-30 18:30
举报帖子
使用道具
赠送鲜花
crzzhou
等 级:
论坛游民
帖 子:6
专家分:12
注 册:2016-1-1
第
4
楼
收藏
得分:8
回复 2楼 rjsp
您好,请问123.4500000002842……后面的非零数字是怎么弄出来的
因为我自己在VC6.0弄不出来=-=
代码如下
#include<stdio.h>
int main(void)
{
float a;
double b;
a = 123.45;
b = 123.45;
printf("a=%.40f\nb=%.40lf\n",a,b);
return 0;
}
结果如下
a=123.4499969482421900000000000000000000000000
b=123.4500000000000000000000000000000000000000
并不是质疑您只是没搞懂
刚学的C如有冒犯请多多包涵
2016-01-01 22:02
举报帖子
使用道具
赠送鲜花
rjsp
等 级:
版主
威 望:
528
帖 子:9025
专家分:54030
注 册:2011-1-18
第
5
楼
收藏
得分:8
回复 4楼 crzzhou
我是根据浮点数的格式,自己解析的,代码很长就不贴了
或者,你可以用gcc,gcc可以精确指定的长度。
2016-01-04 09:47
举报帖子
使用道具
赠送鲜花
5
1/1页
1
快速回复:
C语言float换成double的问题
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.029940 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved