回 帖 发 新 帖 刷新版面

主题:关于浮点数相等的问题

有如下语句:

REAL    TT1,TT2

..........

..........

IF(TT1==TT2)THEN

.....................

.....................

ENDIF

记得之前看到过说判断浮点数相等最好别像整数那样直接判断,而是最好用(TT1-TT2)<EPS,(注:EPS为一极小数)

我试了一个简单的,给两个数都赋值1.0,结果也对。到底能不能呢?

回复列表 (共2个回复)

沙发

不能。

这个问题就好像,喝了酒能不能开车?在施工场地能不能不带安全帽一样。

你试一下,或许没事。但是,不要这么做。

如果你了解一下浮点数的存储方式,你就应该知道。浮点数是近似的表达。

实数在数轴上是连续的,无穷个。而计算机的存储不可能是无限制的。所以 real 的存储方式只能是很小间隔的,近似连续的。

这必定会有浮点数误差。

你可以试试:

T1 = 3.141592653589793238462643383279502884197

然后把它 write 出来,看看是不是还是这个数?你再判断一下呢?

板凳


(TT1-TT2)<EPS 是标准用法

我来回复

您尚未登录,请登录后再回复。点此登录或注册