为什么Visual FoxPro对于某些比较没有给出预期的答案?

时间:2019-04-29 04:30:56

标签: comparison visual-foxpro

Visual FoxPro的以下行为使我感到困惑。

CREATE TABLE test_17 (A C(2), B N(10,2))

CREATE TABLE test_18 (A C(2), B N(20))

INSERT INTO test_17 values ('C1', 1037.60)

INSERT INTO test_17 values ('C2', 2411.50)

INSERT INTO test_18 VALUES ('C1', 1037600)

INSERT INTO test_18 VALUES ('C2', 2411500)

以下查询

SELECT * FROM test_17 a, test_18 b WHERE a.A = b.A AND a.B*1000 = b.B

仅返回 C2 行,而不返回 C1 行,而

SELECT * FROM test_17 a, test_18 b WHERE a.A = b.A AND a.B*1000 <> b.B

未按预期返回什么,并且

SELECT IIF(a.B*1000 = b.B,'T','F') FROM test_17 a, test_18 b WHERE a.A = b.A

按预期返回 T ,“ T”。

有人可以向我解释为什么 Visual FoxPro 会这样吗?谢谢。

1 个答案:

答案 0 :(得分:2)

尝试         int(a.B * 1000)= b.B

在所有数字设备中,浮点数都是一个近似值,它们的比较只是一个猜测。