17.4 + 5.7 =? ( 积分: 20 )

H

hlfysj

Unregistered / Unconfirmed
GUEST, unregistred user!
var
i, j, k, L: double;
begin
i := 17.4;
j := 5.7;
k := i + j;
L := 23.1;
if k=L then
showmessage('Right');
为什么不显示right呀?

类似一组数还有:140.1 + 79.8 <&gt
219.9
21.1 + 1.6 <&gt
22.7
 
var
i, j, k, L: double;
begin
i := 17.4;
j := 5.7;
k := i + j;
L := 23.1;
if k=L then
showmessage('Right');
为什么不显示right呀?

类似一组数还有:140.1 + 79.8 <&gt
219.9
21.1 + 1.6 <&gt
22.7
 
浮点数比较原则:
delta为足够小的数
function AEqualB(A,B:double):boolean;
begin
result= abs(a-b)<delta
end;

 
var
i, j, k, L: double;
begin
i := 17.4;
j := 5.7;
k := i + j;
L := 23.1;
if k-L=0 then
showmessage('Right');
 
浮点数不能直接比较的,只能两数相减比任意小的数小就认为相等
 
比任意小的数小: 是指的什么呀?这个数应该怎么确定呀?
 
对的,一般来说认为其差值小于10的6次方就可以了
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
636
import
I
I
回复
0
查看
440
import
I
I
回复
0
查看
577
import
I
I
回复
0
查看
754
import
I
I
回复
0
查看
740
import
I
顶部