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桁であることが確認できる。