コンテンツにスキップ

実数型

出典: フリー百科事典『ウィキペディア(Wikipedia)』

実数型(じっすうがた、(英: real data type)とは、プログラミング言語において実数を対象とする数値計算に用いられるデータ型である。

数学的な「任意の実数」を有限の記憶領域で正確に表現することはできないため、実際には浮動小数点数や固定小数点数などの数値表現が用いられる。実数型が表現できる値の集合は数学における実数全体とは異なり、表現方法によって正確に表現できる値やその範囲、精度などが異なる。また、表現方法によっては無限(+∞および-∞)や、非数値であるNaN、+0とは異なる-0など数学的な実数ではないものを表せる場合もある。

データ型の名称は、プログラミング言語によってさまざまであり、一例として real、float、double、decimal などが使われているが、例え同じ名称であってもその意味や表現形式はプログラミング言語および処理系によって異なる場合がある。

表現方法

[編集]

固定小数点数

[編集]

固定小数点数(英: Fixed-point numbers)表現は、表現したい値を整数値と暗黙の分母による分数の形で表現する。

例えばその暗黙の分母を 65 536 (216) とすれば、0x12345678(ここで 0xは、十六進数を表す接頭辞である)と表現されているデータは 0x12345678/65536 という値を意味していることになる(あるいは十六進数のままで小数表記をするなら 0x1234.5678 となる)。

なお

0x1234567865536=30541989665536=46602213665536≈4660.33777

である。

暗黙の分母としては2の冪や10の冪などが使われることが多く、それぞれ二進固定小数点数、十進固定小数点数とよばれる[1][2] [3]。

なお、この暗黙の分母の逆数をスケールファクタ(英語版)と呼ぶ。 また、暗黙の母数が n の冪であれば、基数は n となる。

浮動小数点数

[編集]

浮動小数点数(英: Floating-point numbers)表現は、指数表記(科学的表記)に似て数値を有効数字に相当する部分と指数に相当する部分に分けて表現する。例えば十進数の 123 000 を指数表記では 1.23×105 と表すのと同様に、浮動小数点表現では概念的に

f×be

の形で表す。ここで f は仮数、b は基数、e は指数である。

初期のコンピュータでは、浮動小数点の表現形式や演算方式は機種によって異なっていた[4] [5]。1970年代末から IEEE において表現形式や演算規則などの標準化が進められ、その成果として1985年に IEEE 754-1985 が制定された[6]。その後、同規格に基づく二進浮動小数点形式が広く普及した[7][8]。IEEE 754は2008年および2019年に改訂されている[9][10]。

基数としては、2 あるいは 10 が用いられることが多く、それぞれ二進浮動小数点数、十進浮動小数点数と呼ばれる[2]。

IEEE 754 では、二進浮動小数点数として3つの基本形式と、それらを含む4つの交換形式を規定している。

同様に IEEE 754 では、十進浮動小数点数として2つの基本形式と、それらを含む3つの交換形式を規定している。

  • decimal32 - 32ビットの十進単精度浮動小数点数。基本形式ではなく交換形式として規定されている
  • decimal64 - 64ビットの十進倍精度浮動小数点数
  • decimal128 - 128ビットの十進四倍精度浮動小数点数

基数

[編集]

固定小数点数表現と浮動小数点数表現では、値の表現に用いる基数によっても表現可能な範囲が異なる。

コンピュータでは二進数形式(基数として 2 を使用)が広く用いられる一方、十進法で有限桁となる小数値を正確に表現することを目的として十進数形式(基数として 10 を使用)も用いられる。 例えば 1/10 は十進法では 0.1 と有限桁で表わせるが、二進法では循環小数となる。 このため、有限精度の二進数では 0.1 そのものを正確には表現できない。 一方、十進数形式であっても 1/3 のように十進法で有効桁にならない値や、形式の精度を超える値には丸めが必要となる。

関連するデータ型

[編集]

通貨型

[編集]

金額型とも。通貨の量(金額)を表すための型である[11]。性質上、二進浮動小数点型を避け、明示的な十進数の精度と丸め規則をもつ方法が用いられる。

有理数型

[編集]

有理数型(英: Rational type)あるいは分数型(英: Fraction type)は、有理数を表すために内部的に分数の形で分子と分母のぞれぞれを整数型として保持し、浮動小数点のような丸め誤差なしに分数を扱える型である[12][13][14]。

数式型

[編集]

数式型(英: Expression type)あるいはシンボル型(英: Symbol type)は、数値ではなく、変数や定数、数式そのものを記号として保持し、因数分解や微分などの数式処理(シンボリック計算)を行うための型。

研究的な方法

[編集]

二重指数表現

[編集]

±p±qm(p, q は定数、m が内部表現される変数)の形の実数を表す。p = q = 2 とするURR(Universal Representation of Real numbers の略)が知られる[15]。

仮数部と指数部の2変数を持つ浮動小数点数と比べ、指数の指数とでも言うべき1つの変数しか持たない。同じビット数の浮動小数点数より非常に広い範囲の実数を、可変する精度(±1 付近で最も高精度で、それらから離れるに従い悪くなる)で表せる。仮数部と指数部のビット数が可変な実数表現と言うこともできる。

関連項目

[編集]

脚注

[編集]
  1. ↑ 河西棟馬 (2016-03-31). “コンラート・ツーゼにおける計算機観”. 科学哲学科学史研究 (京都大学文学部科学哲学科学史研究室) 10. doi:10.14989/210112.
  2. 1 2 “decimal --- 10進固定小数点と浮動小数点の演算”. Python 3.15 documentation. 2026年11月7日閲覧。
  3. ↑ “10 進固定小数点定数”. IBM Enterprise PL/I for z/OS. 2026年11月7日閲覧。
  4. ↑ Kahan, William (1981年2月12日). “Why Do We Need a Floating-Point Arithmetic Standard?”. University of California, Berkeley. 2026年11月7日閲覧。
  5. ↑ Moler, Cleve (2019年1月18日). “Floating Point Arithmetic Before IEEE 754”. 2026年11月7日閲覧。
  6. ↑ IEEE Std 754-1985: IEEE Standard for Floating-Point Arithmetic. IEEE. (1985-10-12). doi:10.1109/IEEESTD.1985.82928. ISBN 978-0-7381-1165-0
  7. ↑ デイビッド・パターソン、ジョン・ヘネシー「第3章:算術演算」『コンピュータの構成と設計』(第6版)日経BP、2021年11月3日。ISBN 978-4296070091。
  8. ↑ “Floating point numbers”. GNU coreutilsマニュアル. 2026年11月6日閲覧。
  9. ↑ IEEE Std 754-2008: IEEE Standard for Floating-Point Arithmetic. IEEE. (2008-08-29). doi:10.1109/IEEESTD.2008.4610935. ISBN 978-0-7381-5752-8
  10. ↑ IEEE Std 754-2019: IEEE Standard for Floating-Point Arithmetic. IEEE. (2019-07-22). doi:10.1109/IEEESTD.2019.8766229. ISBN 978-1-5044-5924-2
  11. ↑ “通貨データ型”. Microsoft Learn (2024年10月25日). 2026年11月5日閲覧。
  12. ↑ “Complex and Rational Numbers”. Julia Language Development Documentation. 2026年11月5日閲覧。
  13. ↑ “12 Rational Numbers”. The Haskell 98 Language Report. 2026年11月5日閲覧。
  14. ↑ “fractions --- 有理数”. Python 3 documentation. 2026年11月5日閲覧。
  15. ↑ 浜田穂積「二重指数分割に基づくデータ長独立実数値表現法」『情報処理学会論文誌』第22巻第6号、一般社団法人情報処理学会、1981年11月15日、521-526頁、NAID 110002723634。