我需要使用gpmlib在C ++中提取double的有效数和指数
例如:双倍a = 1.234;
我想提取1234作为有效数,3提取为指数,使得a = 1234e-3。我听说gpmlib支持这种类型的功能。我不知道如何使用这个库。
请使用此库分享一些示例代码。
答案 0 :(得分:1)
您似乎正在寻找mpf_class::get_str()
,它会将浮点值1.234
分解为字符串"1234"
和指数1
,因为{ {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';
}