0

gpmlib を使用して、C++ で double の仮数と指数を抽出する必要があります。
例: double a = 1.234;
a = 1234e-3になるように、1234を仮数として、3を指数として抽出したいと思います。gpmlib はこのタイプの関数をサポートしていると聞きました。このライブラリへのアクセス方法がわかりません。

このライブラリを使用したサンプル コードを共有してください。

4

1 に答える 1

1

を探しているようです。mpf_class::get_str()これにより、浮動小数点値1.234が文字列"1234"と指数1に分割されます。1.234 == 0.1234 * 10^1

要件に合わせて、その指数から文字列のサイズを差し引く必要があります。

#include <iostream>
#include <string>
#include <gmpxx.h>
int main()
{
    double a = 1.125; // 1.234 cannot be stored in a double exactly, try "1.234"
    mpf_class f(a);
    mp_exp_t exp;
    std::string significand = f.get_str(exp);
    std::cout << "significand = " << significand
              << " exponent = " << exp-(int)significand.size() << '\n';

}

これは印刷します

~ $ ./test
significand = 1125 exponent = -3
于 2011-06-08T17:51:15.880 に答える