找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1810|回复: 7

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

[复制链接]
发表于 2009-11-6 01:14:37 | 显示全部楼层 |阅读模式 IP:江苏扬州
#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的类型变量!!谢谢了!!
发表于 2009-11-6 01:14:38 | 显示全部楼层 IP:江苏扬州
overflow了!
回复

使用道具 举报

发表于 2009-11-6 01:14:40 | 显示全部楼层 IP:江苏扬州
2.43e+22f太大了,数据溢出
回复

使用道具 举报

发表于 2009-11-6 01:14:41 | 显示全部楼层 IP:江苏扬州
没溢出,精度丢失而已。
回复

使用道具 举报

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

使用道具 举报

发表于 2009-11-6 01:14:43 | 显示全部楼层 IP:江苏扬州
我就输出
附件: 只有本站会员才能下载或查看附件,请您 登录 或 注册
回复

使用道具 举报

发表于 2009-11-6 01:14:45 | 显示全部楼层 IP:江苏扬州
精度丢失,如5楼所说,可以将b的值输出来,而结果和a 会是一样的(vc++6.0)
回复

使用道具 举报

发表于 2009-11-6 01:14:47 | 显示全部楼层 IP:江苏扬州
精度问题吧,好像只有7位有效数字,以后计算机就不记了
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 17:41 , Processed in 0.176053 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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