Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
typ
Platí na:
Databricks SQL
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). -
SUMaAVGvraťDECFLOAT(34).MINaMAXzachování přesnosti vstupu. -
SQRT, ,ABSaROUNDpř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í
DOUBLEvstupy, DECFLOAT přímo nepřijímají. Převeďte hodnotu naDOUBLEprvní (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)aDECFLOAT(34)sALTER COLUMNnení podporována.