実数型は、単純型の1つで順序型には含まれません。ここでは実数型について説明します。
32bitプラットフォームと64bitプラットフォームで違いがあるので注意してください。
実数型 |
---|
実数型は、数学でいう実数の部分集合を表します。
Object Pascal では、IEEE-754 浮動小数点を使用します。IEEE-754 浮動小数点には4バイト浮動小数点(単精度)と8バイト浮動小数点(倍精度)があります。
32bitプラットフォームでは、10バイト浮動小数点(拡張精度)が使用可能です。64bitプラットフォームでは10バイト浮動小数点(拡張精度)は使用できません。
実数型は、順序型と違い、先行値(1つ前の値)と後続値(1つ後の値)という概念はありません。
■実数型の範囲とサイズ 値には正・負があり、範囲は絶対値を示しています。
型 | 値の範囲 (最小 .. 最大) | サイズ | 有効桁数(10進数) | |
---|---|---|---|---|
Real | 5.0E-324 .. 1.7E308 | 8 バイト (64bit) | 15桁 *1) | |
Single | 1.5E-45 .. 3.4E38 | 4 バイト (32bit) | 7桁 | |
Double | 5.0E-324 .. 1.7E308 | 8 バイト (64bit) | 15桁 | |
Extended | 1.9E-4932 .. 1.1E4932 | 10 バイト (80bit) | 19桁 | |
5.0E-324 .. 1.7E308 | 8 バイト (64bit) | 15桁 *2) |
*1) Real 型は、プラットフォーム依存のネイティブ実数ですが、ここでは Double と同じになります。
*2) 64bitプラットフォームでは、10バイト浮動小数点(拡張精度)が使用できないため、Extended 型は Double 型と同じになります。
Object Pascal には、上記の実数の他に、特殊な実数の Comp 型と Currency 型があります。
これらは、実数に分類されていますが、内部的には8バイト整数として使用されます。
■特殊な実数型の範囲とサイズ
型 | 値の範囲 (最小 .. 最大) | サイズ | |
---|---|---|---|
Comp | -9223372036854775808 .. 9223372036854775807 | 8 バイト | |
Currency | -922337203685477.5808 .. 922337203685477.5807 | 8 バイト |
Currency 型は、内部的には Comp の様に整数で持っていて、計算するときに自動的に 10,000で除算したり乗算して桁を調整します。
内部的には整数ですが、実数扱いなので、先行値(1つ前の値)と後続値(1つ後の値)という概念はありません。
32bitプラットフォームでは、実数の定数は、Extended 型になります。
64bitプラットフォームでは、実数は定数は、Double 型になります。
64bitプラットフォームでは、実数の定数で指定できる桁数は 15桁程度なので、それ以上の桁数の Comp 型や Currency 型をリテラル定数で指定することはできません。
32bitプラットフォームから64bitプラットフォームに移行する場合は注意が必要です。