「実数型」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
→‎固定小数点数: 上に{{main}}が貼ってあるので、重ねての誘導は不要
編集の要約なし
22行目: 22行目:
0.1、0.01 など、[[10進数]]では割り切れる小数でも、2進数では[[無限小数]]となり[[丸め誤差]]が発生する。この種のデータを丸め誤差なしに扱うための実数型が10進型である。
0.1、0.01 など、[[10進数]]では割り切れる小数でも、2進数では[[無限小数]]となり[[丸め誤差]]が発生する。この種のデータを丸め誤差なしに扱うための実数型が10進型である。


内部表現は整数型の仮数で、それがスケーリングされる。仮数が整数 ''n'' のとき、実数 ''n'' / 10{{sup|''m''}} を表す。10{{sup|''m''}} をスケールファクタと呼ぶ。
内部表現は整数型の仮数で、それがスケーリングされる。仮数が整数 ''n'' のとき、実数 ''n'' / 10{{sup|''m''}} を表す。10{{sup|''m''}} を[[スケールファクタ]]と呼ぶ。


スケールファクタは固定とは限らず、浮動小数点数のようにスケールファクタを指数部として型の内部に備え可変とした型もある。たとえば [[Visual Basic]] の10進型は1、仮数部(符号なし整数)に12バイト、指数部・符号などに4バイトを使う。
スケールファクタは固定とは限らず、浮動小数点数のようにスケールファクタを指数部として型の内部に備え可変とした型もある。たとえば [[Visual Basic]] の10進型は1、仮数部(符号なし整数)に12バイト、指数部・符号などに4バイトを使う。


仮数は通常の整数表現とは限らず、4ビットで10進1桁(0~9)を表す[[パックBCD]]や、8ビットで10進2桁(0~99)を表す内部表現も使われる。これらが使われるのは桁数の多い整数型を容易に提供するためであり、通常の整数表現で桁数を多くできるならパックBCD等を使う必要性は薄い。
仮数は通常の整数表現とは限らず、4ビットで10進1桁(0~9)を表す[[パックBCD]]や、8ビットで10進2桁(0~99)を表す内部表現も使われる。これらが使われるのは桁数の多い整数型を容易に提供するためであり、通常の整数表現で桁数を多くできるならパックBCD等を使う必要性は薄い。

2014年7月4日 (金) 00:21時点における版

実数型(じっすうがた)は、コンピュータプログラミングにおいて実数の近似を表現するデータ型である。実数は可算無限集合でないため、有限の量を正確に表すことしかできないコンピュータで、実数を正確に表現することは不可能である。

表現方法

有理数

一般的に有理数を表すには分子と分母を整数として記憶する方法が用いられる。整数型も参考のこと。

固定小数点数

固定小数点数データ型は、表現したい値に特定の数(2の冪となることが多い)を乗算したものをデータ表現とするデータ型である。データ表現から特定の数を割ると、そのデータが表す値になる。

例えばその特定の数を65,536 (216)とすれば、0x12345678(十六進法)と表現されているデータは0x12345678 / 65536という値を意味していることになる。なお0x12345678 / 65536 = 305419896 / 65536 = 4660 + 22136 / 65536 ≒ 4660.33777である。この場合65,536を暗黙の内に分母にした有理数と見なすこともできる。

浮動小数点数

浮動小数点数データ型は、有理数型の柔軟性と固定小数点数の演算の速さの中間に位置する折衷案と言える。浮動小数点数ではデータ中の多少のビットを指数用に使い、残りを仮数に使う(通常、符号にも1ビット使われる)。仮数は通常(0, 1]の範囲になる(通常、0の表現は特別扱いされる)。指数部分の値を予め定めておいた基数(通常2)で乗じた数を仮数にかけたものが、その浮動小数点数が表現する値となる。これを式にすると、仮数をf、指数の値をe、基数をbとしてf * beということである。

浮動小数点数IEEE 754(浮動小数点数標準)も参照のこと。

10進型

0.1、0.01 など、10進数では割り切れる小数でも、2進数では無限小数となり丸め誤差が発生する。この種のデータを丸め誤差なしに扱うための実数型が10進型である。

内部表現は整数型の仮数で、それがスケーリングされる。仮数が整数 n のとき、実数 n / 10m を表す。10mスケールファクタと呼ぶ。

スケールファクタは固定とは限らず、浮動小数点数のようにスケールファクタを指数部として型の内部に備え可変とした型もある。たとえば Visual Basic の10進型は1、仮数部(符号なし整数)に12バイト、指数部・符号などに4バイトを使う。

仮数は通常の整数表現とは限らず、4ビットで10進1桁(0~9)を表すパックBCDや、8ビットで10進2桁(0~99)を表す内部表現も使われる。これらが使われるのは桁数の多い整数型を容易に提供するためであり、通常の整数表現で桁数を多くできるならパックBCD等を使う必要性は薄い。

通貨型

金額型とも。通貨の量(金額)を表すための型である。性質上10進小数を正確に扱う必要があるため、10進型や10の冪でスケーリングした固定小数点型で実装される。

二重指数表現

±p±qmp, q は定数、m が内部表現される変数)の形の実数を表す。p = q = 2 とするURRが知られる。

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

いくつか便利な特徴があるが、実装が複雑になるため、プリミティブな実装はない。