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