long double
80ビット精度浮動小数点データ型
C++Builderには、80ビット精度の浮動小数点データ型long doubleが用意されている。これを標準の64ビット精度の浮動小数点型doubleと比較するプログラムをコンソール・アプリケーションとして以下のように作成した。
#pragma hdrstop
#include <tchar.h>
//---------------------------------------------------------------------------
#include <iostream>
#include <iomanip>
using namespace std;
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
double x = 1.0, d = 1.0, x0;
do {
x0 = x;
d *= 0.1;
x += d;
} while (x > x0);
cout << "d = " << d << endl;
long double y = 1.0, e = 1.0, y0;
do{
y0 = y;
e *= 0.1;
y += e;
} while (y > y0);
cout << "e = " << e << endl;
cout << "文字キーを押してから、Enterキーを押してください。" << endl;
char c[100];
cin >> c;
return 0;
}
上のプログラムを実行すると図1のようになる。
図1
doubleの精度は16桁であるが、long doubleは20桁であることが確認できる。