typ DECFLOAT

Platí na:zaškrtnuté ano Databricks SQL označeno ano Databricks Runtime 19 a výše

Představuje čísla s plovoucí desetinnou čárkou v základně 10 s 16 nebo 34 znakovými číslicemi a bez pevné škály.

Důležité

DECFLOAT je v beta verzi. Správce pracovního prostoru musí povolit datový typ DECFLOAT v Previews.

Syntax

DECFLOAT [ ( p ) ]
  • p: Maximální počet významných desetinných číslic. Podporované hodnoty jsou 16 a 34. Výchozí hodnota je 34.

DECFLOAT nepřijímá argument o měřítku. Každá hodnota má svůj vlastní exponent.

Limits

Property DECFLOAT(16) DECFLOAT(34)
Významné číslice Až 16 Až 34
Nejmenší kladná nenulová hodnota 1E-398 1E-6176
Největší kladná konečná hodnota (10^16 - 1) × 10^369 (10^34 - 1) × 10^6111

Stejné limity platí i pro záporná čísla. Oba typy také podporují nekonečnost a NaN.

Literals

Použití CAST s řetězcem nebo podporovanou číselnou hodnotou. Řetězce mohou také obsahovat NaN, Inf, nebo Infinity.

Notes

DECFLOAT představuje desetinné hodnoty, například přesně 0.1 . Hodnoty přesahující přesnost mohou zaokrouhlovat bez chyby, včetně s .TRY_CAST Přímo vysílejte desetinný text. Konverze procházejí FLOAT nebo DOUBLE mohou ztratit přesnost.

Výstup řetězce zachovává koncové nuly, takže stejné hodnoty jako 1.5 a 1.50 mohou produkovat různé řetězce (+15E-1 a +150E-2). Hází se z DECFLOAT na DECIMAL zaokrouhlení na polovinu, nezávisle na DECFLOAT_ROUNDING_MODE.

  • Aritmetika zachovává přesnost, když oba operandy mají stejný typ DECFLOAT. Smíšené přesnosti nebo operace s jinými podporovanými typy čísel používají DECFLOAT(34).
  • SUM a AVG vrať DECFLOAT(34). MIN a MAX zachování přesnosti vstupu.
  • SQRT, , ABSa ROUND přijmout DECFLOAT přímo.

DECFLOAT_ROUNDING_MODEovládá zaokrouhlování pro seslávání na DECFLOAT, +, -, *, /, SQRT, , SUMa .AVG Výchozí hodnota je ROUND_HALF_EVEN. Další podporované režimy jsou ROUND_HALF_UP, ROUND_CEILING, ROUND_FLOOR, a ROUND_DOWN. DIVodstraní zlomkovou část výsledku, bez ohledu na .DECFLOAT_ROUNDING_MODE ROUND, BROUND, a TRUNCATE používají vlastní pravidla zaokrouhlování.

> SET DECFLOAT_ROUNDING_MODE = ROUND_FLOOR;
> SELECT CURRENT_DECFLOAT_ROUNDING_MODE();
  ROUND_FLOOR

S výchozím zaokrouhlovacím režimem přetečení vytváří nekonečno a dělení nulou neboli NaN. Režim ANSI tyto výsledky nemění. Podporované TRY_* aritmetické funkce zachovávají nekonečno a NaN místo toho, aby vracely NULL. NaN se porovnávají a třídí podle pozitivního nekonečna. Kladné a mínus nula se porovnávají rovně. Použijte ISNAN k detekci NaN.

Examples

> SELECT CAST('1.5' AS DECFLOAT(34)) + CAST('2.5' AS DECFLOAT(34)) AS total;
  +40E-1

> SELECT CAST(CAST('1.23E+100' AS DECFLOAT(34)) AS STRING);
  +123E+98

> SELECT typeof(CAST('1' AS DECFLOAT(16)) + 1);
  decfloat(34)

Limitations

  • Operace zbytku a bitů nejsou podporovány.
  • Funkce, které vyžadují DOUBLE vstupy, DECFLOAT přímo nepřijímají. Převeďte hodnotu na DOUBLE první (to může vést ke ztrátě přesnosti).
  • DECFLOAT není kompatibilní s deletion vectors. Při vytváření tabulky Delta s DECFLOAT sloupci nastavte TBLPROPERTIES ('delta.enableDeletionVectors' = 'false'). U existujících tabulek před přidáním sloupců DECFLOAT vynechte funkci tabulky s vektory mazání .
  • Tabulky Delta obsahující DECFLOAT nemohou mít zapnuté čtení Icebergu .
  • Zápis DECFLOAT hodnot přímo do souborů Parquet není podporován.
  • DECFLOAT sloupce nemají žádné minimální a maximální statistiky pro přeskočení dat. Nemohou být sloupci oddílů, klíče pro shlukování, sloupce Z-pořadí ani sloupce indexu Bloom filtru.
  • Změna sloupce mezi DECFLOAT(16) a DECFLOAT(34) s ALTER COLUMN není podporována.