1
浮点数的不确定性和
让我指出一个明显的拳头:我完全理解浮点类型不能准确表示十进制值。这不是这个!但是,浮点计算应该是确定性的。 既然已经解决了,让我向您展示我今天观察到的奇怪案例。我有一个浮点值列表,我想总结一下: CREATE TABLE #someFloats (val float); INSERT INTO #someFloats (val) VALUES (1), (1), (1.2), (1.2), (1.2), (3), (5); SELECT STR(SUM(#someFloats.val), 30, 15) FROM #someFloats; DROP TABLE #someFloats; -- yields: -- 13.600000000000001 到目前为止,一切都很好-这里不足为奇。我们都知道1.2不能完全用二进制表示形式,因此期望“不精确”的结果。 现在,当我左联接另一个表时,会发生以下奇怪的事情: CREATE TABLE #A (a int); INSERT INTO #A (a) VALUES (1), (2); CREATE TABLE #someFloats (val …