- カテゴリ:
TO_DOUBLE¶
式を倍精度浮動小数点数に変換します。
NULL 入力の場合、結果は NULLです。
- こちらもご参照ください。
構文¶
TO_DOUBLE( <expr> [, '<format>' ] )
引数¶
expr
数値、文字、またはバリアント型の式です。
format
式が文字列に評価される場合、関数はオプションの形式モデルを受け入れます。形式モデルは SQL 形式モデル で説明されています。形式モデルは、出力値の形式ではなく、入力文字列の形式を指定します。
戻り値¶
この関数は FLOAT データ型の値を返します。
expr
が NULL の場合、関数は NULL を返します。
使用上の注意¶
固定小数点数は浮動小数点に変換されます。変換が失敗することはありませんが、精度が失われる可能性があります。
文字列は10進整数または小数として変換され、科学表記法と特別な値(nan、 inf、 infinity)が受け入れられます。
VARIANT 入力の場合:
バリアントに固定小数点値が含まれる場合、数値変換が実行されます。
バリアントに浮動小数点値が含まれる場合、値は変更されずに保持されます。
バリアントに文字列が含まれている場合、文字列変換が実行されます。
バリアントにブール値が含まれる場合、結果は0または1(対応するfalseおよびtrue)になります。
バリアントに JSON null 値が含まれていると、出力は NULLになります。
10進小数の2進浮動小数への変換および逆変換は正確ではありません(つまり、10進表現から変換された浮動小数点数を出力すると、わずかに異なる数値が生成される場合があります)。小数の正確な表現が必要な場合は、固定小数点数を使用します。
例¶
異なるデータ型の列を持つテーブルを作成した後、このスクリプトはそれらの各列で TO_DOUBLE を呼び出します。
CREATE OR REPLACE TABLE double_demo (d DECIMAL(7, 2), v VARCHAR, o VARIANT);
INSERT INTO double_demo (d, v, o) SELECT 1.1, '2.2', TO_VARIANT(3.14);
SELECT TO_DOUBLE(d), TO_DOUBLE(v), TO_DOUBLE(o) FROM double_demo;
+--------------+--------------+--------------+
| TO_DOUBLE(D) | TO_DOUBLE(V) | TO_DOUBLE(O) |
|--------------+--------------+--------------|
| 1.1 | 2.2 | 3.14 |
+--------------+--------------+--------------+
次の例は、2進浮動小数から数値への変換が正確でないことを示しています。
SELECT TO_DOUBLE(1.1)::NUMBER(38, 18);
+--------------------------------+
| TO_DOUBLE(1.1)::NUMBER(38, 18) |
|--------------------------------|
| 1.100000000000000089 |
+--------------------------------+