DECFLOAT 型

適用対象:チェックマーク、はい 、Databricks、SQL 、はい 、Databricks、ランタイム19以上

16桁または34桁の有効数字を持つ10進数浮動小数点数を表し、固定のスケールはありません。

Important

DECFLOAT は ベータ版です。 ワークスペース管理者はプレビューでDECFLOATデータ型を有効にする必要があります。

Syntax

DECFLOAT [ ( p ) ]
  • p: 有効小数点数の最大数。 サポートされる値は16と34です。 デフォルトは34です。

DECFLOAT スケールの議論を受け入れません。 それぞれの値は独自の指数を持っています。

Limits

Property DECFLOAT(16) DECFLOAT(34)
有効数字 最大16人まで 最大34
最小の正のゼロでない値 1E-398 1E-6176
最大の正の有限値 (10^16 - 1) × 10^369 (10^34 - 1) × 10^6111

負の数にも同じ制限が適用されます。 両タイプとも無限大とNaNをサポートします。

Literals

文字列またはサポートされた数値付きの CAST を使います。 文字列はまた、 NaN、 Inf、または Infinityを含むこともあります。

Notes

DECFLOAT は 0.1 といった小数点の値を正確に表します。 精度を超える値は誤差なく丸めることができ、 TRY_CASTも含まれます。 小数点の文字を直接キャストしてください。 FLOATやDOUBLEで変換すると精度が低下することがあります。

文字列出力は後ろのゼロを保持するため、 1.5 と 1.50 のような等しい値でも異なる文字列(+15E-1 と +150E-2)が生成されます。 DECFLOATから DECIMAL へのキャストは、 DECFLOAT_ROUNDING_MODEとは独立して半分の半分の半分の半分の投擲をします。

  • 両方のオペランドが同じDECFLOAT型を持つ場合、算術は精度を保ちます。 精度の混合や他の対応数値型との演算では DECFLOAT(34)を使用します。
  • SUMそしてAVGDECFLOAT(34)返ってくる。 MIN 入力精度を保持 MAX 。
  • SQRT ABS、ROUND直接DECFLOATを受け入れます。

DECFLOAT_ROUNDING_MODE キャストの丸めをDECFLOAT、 +、 -、 *、 /、 SQRT、 SUM、 AVGまで制御します。 既定値は ROUND_HALF_EVEN です。 その他の対応モードには ROUND_HALF_UP、 ROUND_CEILING、 ROUND_FLOOR、 ROUND_DOWNがあります。 DIV DECFLOAT_ROUNDING_MODEに関係なく、結果の分数部分を除去します。 ROUND、 BROUND、 TRUNCATE はそれぞれ独自の丸め規則を用います。

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

デフォルトの丸めモードでは、オーバーフローは無限大を、ゼロで割ると無限大(NaN)が得られます。 ANSIモード はこれらの結果を変えません。 支持 TRY_* 算術関数は無限大とNaNを保存し、返 NULLしません。 NaNは等しいと比較し、正の無限大の後にソートします。 正の零と負の零は同等に比較されます。 ISNANを使ってNaNを検出してください。

例示

> 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)

制限事項

  • 残りの操作とビット単位の操作はサポートされていません。
  • DOUBLE入力を必要とする関数はDECFLOATを直接受け入れません。 まず値を DOUBLE に変換してください(これにより精度の損失が生じる可能性があります)。
  • DECFLOATは削除ベクターとは互換性がありません。 DECFLOAT列を持つDeltaテーブルを作成する際は、 TBLPROPERTIES ('delta.enableDeletionVectors' = 'false')を設定してください。 既存のテーブルについては、DECFLOAT列を追加する前に 削除ベクトルテーブル機能を外 してください。
  • DECFLOATを含むデルタテーブルでは 、アイスバーグ読み取り が有効にはなりません。
  • DECFLOATの値をParquetファイルに直接書き込むことはサポートされていません。
  • DECFLOATの列には、データスキップのための最小/最大統計はありません。 それらはパーティションカラム、クラスタリングキー、Zオーダーカラム、ブルームフィルターインデックスカラムではありえません。
  • DECFLOAT(16)とDECFLOAT(34)の列をALTER COLUMNで切り替えるのはサポートされていません。