As Jay 2019-07-02 20:57 采纳率: 0%
浏览 242

四个实数从小到大排列,结果发现排列后的数与原本的数有小小的差异

四个实数从小到大排列,结果发现排列后的数与原本的数有小小的差异,搞不懂是为什么,怎么可以避免这种情况?

以下是主体代码:(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

图片说明

  • 写回答

1条回答 默认 最新

  • tiantian1626 2019-07-03 09:04
    关注

    实数在计算机里存储本来就存在一定误差,你在排序过程中又进行了计算,误差进一步积累导致误差放大了,
    排序的算法很多,建议不要通过计算来决定大小顺序,

    评论

报告相同问题?

悬赏问题

  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择