GMP mpf_class精确运算问题

时间:2018-10-09 14:01:15

标签: c++ c++11 decimal gmp

我要计算具有高精度数字的数字货币,然后找到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”失败。

0 个答案:

没有答案
相关问题