切り上げ/切り捨て - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - データ タイプおよびリテラル

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/tpf1598412463935.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1143
Product Category
Software
Teradata Vantage

DECIMAL/NUMERICデータ型の切り上げ/切り捨て

挿入する値が、DECIMAL列またはNUMERIC列に収まりきらない場合は、値の切り上げ/切り捨てが行なわれます。SQL Engineでは、DECIMAL/NUMERICフィールドに収まりきる最後の桁であるrounding digitの右にある数字が切り上げ/切り捨てられます。

切り上げ/切り捨て桁の右側の値 切り捨て/切り上げ桁の値
< 5 変わらない。
> 5 1増える。

切り上げ/切り捨て桁の右の数字が正確に5の場合には、他の考慮事項も生じます。そのような考慮事項の1つは、DBS制御レコードのRoundHalfwayMagUpフィールドの値です。

DBS制御レコードのRoundHalfwayMagUpフィールドをFALSEに設定した場合は、以下のテーブルの要領で切り上げ/切り捨てが実行されます。これは、デフォルトです。

切り上げ/切り捨て桁の右側の値が5の場合に付帯する状況 結果
その後にゼロでない桁がない場合
  • 切り捨て/切り上げ桁の数字が奇数の場合、切り捨て/切り上げ桁の数字は1ずつ増えます。
  • 切り捨て/切り上げ桁の数字が偶数の場合、切り捨て/切り上げ桁の数字は変化しません。
その後にゼロでない桁がある場合 切り上げ/切り捨て桁の右側の値は5より大きいものとして切り上げ/切り捨てが行なわれます。

以下のテーブルは、DECIMAL(3,2)列に値を挿入した場合の結果を示したものです。

INSERTの値 値の切り上げ/切り捨て 切り上げ/切り捨て桁の右側の値 結果
.014 切り捨てられる < 5 .01
.015 切り上げられる = 5、かつ、最後の格納位置の数が奇数 .02
.0151 切り上げられる > 5 .02
.024 切り捨てられる < 5 .02
.025 切り捨てられる = 5、かつ、最後の格納位置の数が偶数 .02
.0251 切り上げられる > 5 .03

DBS制御レコードのRoundHalfwayMagUpフィールドをTRUEに設定した場合は、すべての中間点の値が、正または負のどちらの値であっても、ゼロから遠ざかる方向に切り上げられます(図を参照)。


Layer_1 工作表.1 工作表.2 工作表.3 工作表.4 工作表.5 工作表.6 工作表.7 工作表.8 工作表.9 工作表.10 工作表.11 工作表.12 工作表.13 工作表.14 工作表.15 工作表.16 工作表.17 工作表.18 工作表.19 工作表.20 工作表.21 工作表.22 工作表.23 工作表.24 工作表.25 工作表.26 工作表.27 工作表.28 工作表.29 工作表.30 工作表.31 工作表.32

ビジネス アプリケーションの場合、これがもっとも一般的な切り上げ/切り捨ての意味体系ですが、切上げの方向にかなり偏っているのも事実です。

DBS制御レコードとRoundHalfwayMagUpフィールドの詳細は、<Teradata Vantage™ - データベース ユーティリティ、B035-1102>を参照してください。

FLOAT、REAL、DOUBLE PRECISIONの各データ型の切り上げ/切り捨て

FLOAT/REAL/DOUBLE PRECISIONへの変換では、使用可能な最近似値に端数処理(丸め)されます。小数や、9,007,199,254,740,992よりも大きな数は、どちらも正確に表現できる保証はありません。そのため、表現可能な最近似値が選択されます。最近似値と見なされる2つの表現可能な値があるときには、最小有効ビットが0で表わされる値が選択されます。

例えば、0.1をFLOAT列に格納すると、その値はわずかに大きな値に丸められます(0.1000000000000000055511151231257827021181583404541015625)。

NUMBERデータ型の切り上げ/切り捨て

値をNUMBERタイプに切り上げ/切り捨てするときは、NUMBERの位取りを考慮しながら、その値に最も近いNUMBERが選択されます。値から同じ距離のNUMBER値が2つある場合、切り上げ/切り捨てのルールはDBS制御フィールドのRoundNumberAsDecによって決定されます。デフォルトでは、RoundNumberAsDecフィールドはFALSEです。これは桁が切り上げられる(ゼロから離れる)ことを示します。DECIMALの切り上げ/切り捨てをNUMBERの切り上げ/切り捨てに従わせる場合は、RoundNumberAsDecフィールドをTRUEに設定します。この場合、切り上げ/切り捨てのルールは、DBS制御フィールドのRoundHalfwayMagUpによって決定されます。

DBS制御レコード、およびRoundNumberAsDecフィールドとRoundHalfwayMagUpフィールドの詳細は、<Teradata Vantage™ - データベース ユーティリティ、B035-1102>を参照してください。