0
我試圖將MPFR號碼轉換爲字符串,然後返回。我正在使用的代碼是:將MPFR號碼轉換爲字符串並返回
int base = 10;
int input = 25;
mpfr_t number;
mpfr_inits2(53, number, (mpfr_ptr) 0);
mpfr_set_d(number, input, MPFR_RNDD);
mpfr_printf ("mpfr = %.17Rg\n", number);
char* str = NULL;
mpfr_exp_t e;
str = mpfr_get_str (NULL, &e, base, 0, number, MPFR_RNDN);
cout << "str: " << str << endl;
cout << "e: " << e << endl;
mpfr_t back;
mpfr_inits2(53, back, (mpfr_ptr) 0);
mpfr_set_str(back, str, base, MPFR_RNDD);
mpfr_set_exp(back, e);
mpfr_printf ("back = %.17Rg\n", back);
mpfr_free_str (str);
這使我的輸出:
mpfr = 25
str: 25000000000000000
e: 2
back = 2.7755575615628914
如果我改變基地2,然後我得到正確的輸出
mpfr = 25
str: 11001000000000000000000000000000000000000000000000000
e: 5
back = 25
但如果我將輸入更改爲0,我又會得到錯誤的mpfr號碼:
mpfr = 0
str: 00000000000000000000000000000000000000000000000000000
e: 0
back = 0.8125
我究竟做錯了什麼?