Share via


特殊浮點值

適用于:核取標示為是 Databricks SQL 檢查標示為是 Databricks Runtime

以不區分大小寫的方式處理數個特殊浮點值:

  • Inf、+Inf、Infinity、+Infinity:正無限大
  • -Inf、-Infinity:負無限大
  • NaN:不是數位

正和負無限大語意

正數和負無限大有下列語意:

  • 正無限大乘以任何正值傳回正無限大。
  • 負無限大乘以任何正值傳回負無限大。
  • 正無限大乘以任何負值傳回負無限大。
  • 負無限大乘以任何負值傳回正無限大。
  • 正數或負無限大乘以 0 會傳回 NaN。
  • 正或負無限大等於本身。
  • 在匯總中,所有正無限值都會分組在一起。 同樣地,所有負無限大值都會分組在一起。
  • 正無限大和負無限大會被視為聯結索引鍵中的一般值。
  • 正無限大排序低於 NaN 且高於任何其他值。
  • 負無限大排序會低於任何其他值。

NaN 語意

處理 float 不符合標準浮點語意的 或 double 類型時,NaN 具有下列語意:

  • NaN = NaN 會傳回 true。
  • 在匯總中,所有 NaN 值都會分組在一起。
  • NaN 會被視為聯結索引鍵中的一般值。
  • NaN 值會以遞增順序最後一次,大於任何其他數值。

例子

> SELECT double('infinity');
 Infinity

> SELECT float('-inf');
 -Infinity

> SELECT float('NaN');
 NaN

> SELECT double('infinity') * 0;
 NaN

> SELECT double('-infinity') * (-1234567);
 Infinity

> SELECT double('infinity') < double('NaN');
 true

> SELECT double('NaN') = double('NaN');
 true

> SELECT double('inf') = double('infinity');
 true

> SELECT COUNT(*), c2
    FROM VALUES (1, double('infinity')),
                (2, double('infinity')),
                (3, double('inf')),
                (4, double('-inf')),
                (5, double('NaN')),
                (6, double('NaN')),
                (7, double('-infinity'))
        AS test(c1, c2)
    GROUP BY c2;
        2       NaN
        2 -Infinity
        3  Infinity