コンパイルは -lexfloat というオプションをつけるくらい (簡単)。
以下プログラムの書き方についてのメモ。
#define PRECISION 1000 #include <exfloat.h> |
これで 10 進 1000 桁の精度の exfloat というクラスが使えるようになる。
x が exfloat 型の変数であるとき、 整数式ならば のように代入が出来るが、 double の式を代入したりは出来ない ( や、 y が double 型の変数の場合の は駄目)。
double x; exfloat y; .... x = static_cast<double>(y) |
表示桁数 |
std::cout << std::setprecision(1000); |
固定小数形式 (fixed-point format) |
std::cout << std::setiosflags(std::ios::fixed); |
指数形式 (scientific notation, exponential notation) |
std::cout << std::setiosflags(std::ios::scientific); |
test-exflib-1.cpp |
// test-exflib-1.cpp #define PRECISION 50 #include <iostream> #include <exfloat.h> using namespace std; int main(void) { exfloat x, y; x = "1/3"; cout << setprecision(PRECISION) << x << endl; y = 1; y /= 3; cout << y << endl; x = "#PI"; cout << x << endl; return 0; } |
実行 |
[katsurada:~] mk% g++ test-exflib-1.cpp -lexfloat [katsurada:~] mk% ./a.out 0.33333333333333333333333333333333333333333333333333 0.33333333333333333333333333333333333333333333333333 3.1415926535897932384626433832795028841971693993751 [katsurada:~] mk% |
桂田 祐史