我要计算具有高精度数字的数字货币,然后找到GMP mpf_class。但是我有一个问题,r1.get_str()== d1.get_str(),但是assert(r1 == d1)失败。 我想知道这是一个错误吗?或编译时配置较少。
#include <iostream>
#include <iomanip>
#include <gmpxx.h>
#include <assert.h>
using namespace std;
typedef __gmp_expr<mpf_t, mpf_t> Decimal;
int main()
{
Decimal d1("11111111111111111111.111111111111111111111111111111", 256);
Decimal d2("22222222222222222222.222222222222222222222222222222", 256);
Decimal d3("33333333333333333333.333333333333333333333333333333", 256);
Decimal d4("11111111111111111111.111111111111111111111111111111", 256);
Decimal r1((d2 - d1), 256);
Decimal r2(d3 - d1, 256);
Decimal r3(d3 - 0, 256);
cout << setprecision(80) << d1 << "\n"
<< r1 << endl;
assert(d1 == d4);
assert(r1 == d1);
assert(r2 == d2);
assert(r3 == d3);
return 0;
}
shell:g ++ decimalTest.cpp -o运行-lgmpxx -lgmp 外壳:./run 11111111111111111111.111111111111111111111111111111 11111111111111111111.111111111111111111111111111111
运行:decimalTest.cpp:24:int main():断言“ r1 == d1”失败。