実数型は何を使うべきか
|
63 |
ShouldUseRealNumber |
動作確認 |
Delphi2007 |
更新日 |
2008/01/31(木) |
Delphiでは実数型には
Real48 6バイト
Single 4バイト
Double 8バイト
Extended 10バイト
このようなものがあります。
高速に扱う事のできるのはDoubleのようですが
実数型は精度が大切ですので
主にExtendedが使われるようです。
例えば
procedure Check(A, B: Boolean; Msg: String = ''); overload;
begin
if A <> B then
raise Exception.Create('Checkエラー'+ Msg);
end;
procedure TForm1.Button4Click(Sender: TObject);
const
A: Double = 1.1;
B: Extended = 1.1;
begin
Check(False, A=1.1);
Check(True, B=1.1);
end;
このようにして実行すると例外を発生せずにテストを通過します。
つまり、型が違うために
B=1.1 は True ですが
A=1.1 は False になります。
A の Double では使い物になりません。
HELPの"真の定数"という項目にも
> 定数式(constantExpression)が実数の場合,その型は Extended です。
と書かれています。※D2007のHELPでもで確認
累乗を演算するPower関数なども
Extendedを指定するものしか用意されていません。
function Power(Base, Exponent: Extended): Extended;
実数型には通常はExtendedを使用しておくのがよいでしょう。
|