注册 登录
编程论坛 C++教室

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

holetboy 发布于 2007-04-26 13:52, 592 次点击

#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的类型变量!!谢谢了!!


7 回复
#2
aipb20072007-04-26 14:15
overflow了!
#3
zhaoyg2007-04-26 14:41
2.43e+22f太大了,数据溢出
#4
leeco2007-05-16 19:12
没溢出,精度丢失而已。
#5
lovehug2007-05-16 20:13
a = 2.43e+22f与1.0相比太大了,因此b的取值与a相同!
应该是楼上所说的精度丢失!
编程的时候应该尽量避免特别大的数和特别小的数相加,精度有损失!
你可以输出b看一下它的取值到底是不是和a一样就明白了!
#6
yushui2007-05-16 20:20
我就输出
只有本站会员才能查看附件,请 登录

#7
yuyunliuhen2007-05-16 21:48

精度丢失,如5楼所说,可以将b的值输出来,而结果和a 会是一样的(vc++6.0)

#8
sunkaidong2007-05-17 00:15
精度问题吧,好像只有7位有效数字,以后计算机就不记了
1