设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1811|回复: 7
打印 上一主题 下一主题

[求助]关于float的问题希望知道的人说一下呀?

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-6 01:14:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <iostream>
int main()
{
using namespace std;
float a = 2.43e+22f;
float b = a + 1.0f;

cout << " a = " << a << endl;
cout << " b - a = " << b - a << endl;
return 0;
}

在VC++2005中a怎么返回的是24300000451808947000000.000000 ?
b返回的和a的值一样? b-a=返回的值是0.000000?
希望知道的朋友说一下呀.顺便说一下float的类型变量!!谢谢了!!
2#
发表于 2009-11-6 01:14:38 | 只看该作者
overflow了!
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-6 01:14:40 | 只看该作者
2.43e+22f太大了,数据溢出
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-6 01:14:41 | 只看该作者
没溢出,精度丢失而已。
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-6 01:14:42 | 只看该作者
a = 2.43e+22f与1.0相比太大了,因此b的取值与a相同!
应该是楼上所说的精度丢失!
编程的时候应该尽量避免特别大的数和特别小的数相加,精度有损失!
你可以输出b看一下它的取值到底是不是和a一样就明白了!
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-6 01:14:43 | 只看该作者
我就输出
附件: 只有本站会员才能下载或查看附件,请您 登录 或 注册
回复 支持 反对

使用道具 举报

7#
发表于 2009-11-6 01:14:45 | 只看该作者
精度丢失,如5楼所说,可以将b的值输出来,而结果和a 会是一样的(vc++6.0)
回复 支持 反对

使用道具 举报

8#
发表于 2009-11-6 01:14:47 | 只看该作者
精度问题吧,好像只有7位有效数字,以后计算机就不记了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 14:46 , Processed in 0.092848 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表