标题:新人求助 关于数据类型精度的几个问题
只看楼主
knightsaber
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-4-8
结帖率:60%
已结贴  问题点数:20 回复次数:9 
新人求助 关于数据类型精度的几个问题
程序1:
#include<stdio.h>
void main()
{
    float a;
    double b;
    a=33333.33333;
    b=33333.33333333333333;
    printf("a=%f\n b=%f\n",a,b);
}
结果:
a=33333.332031
b=33333.333333
嗯……知道单精度浮点型的有效数字是7位,但是输出结果按双精度输出时末尾的2031是怎么回事……

程序2
#include<stdio.h>
void main()
{
    float a,b;
    int c,d;
    a=123456.789e3;
    b=a+20;
    c=123456789;
    d=c+20;
    printf("b=%f\n",b);
    printf("d=%f\n",d);
}
输出结果:
b=123456816.000000
d=0.000000

b为什么不等于123456809.000000?
还有d为什么整数部分是0?

求大神们指教
搜索更多相关主题的帖子: double void include 
2012-04-08 15:37
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
得分:5 
浮点型不是什么数都能存的,会有精度丢失,比如著名的计算器问题……你可以单独输出a看看
d是int类型的,用浮点型的格式来解释那一段内存就会出错,详细的可以查相关的资料

酱油实习生
2012-04-08 23:10
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
得分:5 
这个看书自学吧 丶谁会给你讲这个

编程之路定要走完……
2012-04-08 23:15
knightsaber
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-4-8
得分:0 
回复 2楼 墨清扬
谢谢大神~我试着去领悟看看
2012-04-09 08:29
knightsaber
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-4-8
得分:0 
回复 3楼 C_戴忠意
就是在看书自学,所以才苦逼啊
2012-04-09 08:30
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
得分:5 
在自动转换类型中,整型只可以转换为double型,你强制转换类型才可以。
2012-04-09 11:42
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:5 
a=33333.332031
b=33333.333333
嗯……知道单精度浮点型的有效数字是7位,但是输出结果按双精度输出时末尾的2031是怎么回事……

精度原因导致的啊 舍入误差 貌似叫这个?

VC就有提示的

warning C4305: “=”: 从“double”到“float”截断




2012-04-09 12:45
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
我在想有没有可能float不让它截断呢?
2012-04-09 12:52
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
长学问了 以前没琢磨过这个事

http://

推荐看看这个 讲的很好。。
2012-04-09 12:56
knightsaber
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-4-8
得分:0 
回复 7楼 zklhp
谢谢版主~学习了
2012-04-09 19:15



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




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

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