Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime 19 ke atas
Mewakili angka titik mengambang basis-10 dengan 16 atau 34 digit signifikan dan tanpa skala tetap.
Sintaks
DECFLOAT [ ( p ) ]
-
p: Jumlah maksimum digit desimal signifikan. Nilai yang didukung adalah 16 dan 34. Default-nya adalah 34.
DECFLOAT tidak menerima argumen skala. Setiap nilai memiliki eksponennya sendiri.
Limits
| Property | DECFLOAT(16) |
DECFLOAT(34) |
|---|---|---|
| Digit signifikan | Hingga 16 | Hingga 34 |
| Nilai positif terkecil yang tidak nol | 1E-398 |
1E-6176 |
| Nilai hingga positif terbesar | (10^16 - 1) × 10^369 |
(10^34 - 1) × 10^6111 |
Batas yang sama berlaku untuk angka negatif. Kedua tipe juga mendukung infinity dan NaN.
Literals
Gunakan CAST dengan string atau nilai numerik yang didukung. String juga dapat mengandung NaN, Inf, atau Infinity.
Notes
DECFLOAT mewakili nilai desimal seperti 0.1 tepat. Nilai yang melebihi presisi dapat dibulatkan tanpa kesalahan, termasuk dengan TRY_CAST. Cast teks desimal langsung. Mengonversi melalui FLOAT atau DOUBLE bisa kehilangan presisi.
Output string mempertahankan nol yang tertinggal, sehingga nilai yang sama seperti 1.5 dan 1.50 dapat menghasilkan string yang berbeda (+15E-1 dan +150E-2). Lempar dari DECFLOAT ke DECIMAL round half up, secara independen dari DECFLOAT_ROUNDING_MODE.
- Aritmetika mempertahankan presisi ketika kedua operand memiliki tipe DECFLOAT yang sama. Presisi campuran atau operasi dengan tipe numerik lain yang didukung menggunakan
DECFLOAT(34). -
SUMdanAVGkembali.DECFLOAT(34)MINdanMAXmenjaga presisi input. -
SQRT,ABS, danROUNDmenerima DECFLOAT secara langsung.
DECFLOAT_ROUNDING_MODEmengontrol pembulatan untuk lemparan ke DECFLOAT, +, , -*, /, SUMSQRTdan AVG. Defaultnya adalah ROUND_HALF_EVEN. Mode lain yang didukung adalah ROUND_HALF_UP, ROUND_CEILING, ROUND_FLOOR, dan ROUND_DOWN.
DIV menghilangkan bagian pecahan dari hasil, terlepas dari DECFLOAT_ROUNDING_MODE.
ROUND, BROUND, dan TRUNCATE menggunakan aturan pembulatan mereka sendiri.
> SET DECFLOAT_ROUNDING_MODE = ROUND_FLOOR;
> SELECT CURRENT_DECFLOAT_ROUNDING_MODE();
ROUND_FLOOR
Dengan mode pembulatan default, overflow menghasilkan tak hingga dan pembagian dengan nol menghasilkan tak hingga atau NaN.
Mode ANSI tidak mengubah hasil ini. Fungsi aritmatika yang didukung TRY_* mempertahankan tak terhingga dan NaN daripada mengembalikan NULL. NaN membandingkan sama dan mengurutkan setelah infinitas positif. Positif dan negatif nol dibandingkan sama. Gunakan ISNAN untuk mendeteksi 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
- Operasi sisa dan bit demi bit tidak didukung.
- Fungsi yang memerlukan
DOUBLEinput tidak menerima DECFLOAT secara langsung. Konversi nilai keDOUBLEfirst (ini dapat menyebabkan kehilangan presisi). - DECFLOAT tidak kompatibel dengan vektor penghapusan. Saat membuat tabel Delta dengan kolom DECFLOAT, atur
TBLPROPERTIES ('delta.enableDeletionVectors' = 'false'). Untuk tabel yang sudah ada, hapus fitur tabel vektor penghapusan sebelum menambahkan kolom DECFLOAT. - Tabel Delta yang berisi DECFLOAT tidak dapat mengaktifkan pembacaan Iceberg .
- Menulis nilai DECFLOAT langsung ke file Parquet tidak didukung.
- Kolom DECFLOAT tidak memiliki statistik min/max untuk lompatan data. Kolom tersebut tidak bisa berupa kolom partisi, kunci clustering, kolom urutan Z, atau kolom indeks filter Bloom.
- Mengganti kolom antara
DECFLOAT(16)danDECFLOAT(34)denganALTER COLUMNtidak didukung.
Related
- Jenis data
-
DECIMALjenis -
DOUBLEjenis -
castfungsi -
try_castfungsi