(a+b)+c==(b+a)+c??
三个float:a,b,c
问值
(a+b)+c==(b+a)+c
(a+b)+c==(a+c)+b
问题点数:20、回复次数:9Top
1 楼zhang21cnboy(事了抚衣去,不留身与名)回复于 2003-11-03 10:07:15 得分 0
a+b+c;
a+2b;Top
2 楼huangyq(阿泉)回复于 2003-11-03 10:07:49 得分 0
?????
楼主啥意思啊??Top
3 楼williamVII(spread)回复于 2003-11-03 10:11:06 得分 0
1
1Top
4 楼dyublackdragon()回复于 2003-11-03 10:11:38 得分 10
不一定相等,float存在大数淹没小数的情况,如
float a=100000000000,b=-100000000000,c=0.00000000001;
cout<<a+b+c<<endl;
cout<<a+c+b<<endl;
结果是1e-011和0;
尽量把数量级相近的数先相加
Top
5 楼carbon107(<软件开发思想.h>)回复于 2003-11-03 10:17:30 得分 10
(a+b)+c==(b+a)+c//这个相同
(a+b)+c==(a+c)+b//这个不一定的
正如楼上说的Top
6 楼verbal()回复于 2003-11-03 10:18:35 得分 0
数量级不能相差太大!
一般数相加应该是等值的!Top
7 楼zhyy(zhyy)回复于 2003-11-03 10:22:00 得分 0
一般不会相等的,因为浮点数在存储时是有误差的,偶尔也会相等
一般来说值是0,极偶然也会等于1,因为值是不确定的,所以该问题毫无意义!Top
8 楼sunjx119(睿锐)回复于 2003-11-03 10:32:38 得分 0
同意楼上,当数量级相差很大的时候,次序不同结果会不一样的。
所以结果不一定是1,1。Top
9 楼happystudy(笑生)回复于 2003-11-03 11:25:38 得分 0
我也同意 up
Top




