四个实数从小到大排列,结果发现排列后的数与原本的数有小小的差异,搞不懂是为什么,怎么可以避免这种情况?
以下是主体代码:(fortran语言)
REAL :: a,b,c,d,max1,min1,max2,min2,e1,e2,e3,e4
Read(*,*) a,b,c,d
IF(a>b) THEN
max1=a
min1=b
ELSE
max1=b
min1=a
END IF
IF(c>d) THEN
max2=c
min2=d
ELSE
max2=d
min2=c
END IF
IF(max1>max2) THEN
e4=max1
ELSE
e4=max2
END IF
IF(min1<min2) THEN
e1=min1
ELSE
e1=min2
END IF
IF((max1+max2-e4)>(min1+min2-e1)) THEN
e3=max1+max2-e4
e2=min1+min2-e1
ELSE
e3=min1+min2-e1
e2=max1+max2-e4
END IF
WRITE(*,*) 'smaller to larger:',e1,e2,e3,e4