我正在尝试使用 mpfr_set_str() 函数将值 0.9999 存储到 mpfr_t 变量中
但 0.9999 在存储期间被舍入为 1(或其他值!= 0.9999),无论舍入值如何(GMP_RNDD、GMP_RNDU、GMP_RNDN、GMP_RNDZ)
那么使用 mpfr_set_str() 将 0.9999 存储在 mpfr_t 变量中的最佳方法是什么?是否可以?
这是我的测试程序,它打印“缓冲区为:1”,而不是想要的“缓冲区为:0.9999”:
int main()
{
size_t precision = 4;
mpfr_t mpfrValue;
mpfr_init2(mpfrValue, precision);
mpfr_set_str(mpfrValue, "0.9999", 10, GMP_RNDN);
char *buffer = (char*)malloc((sizeof(char) * precision) + 3);
mp_exp_t exponent;
mpfr_get_str(buffer,
&exponent,
10,
precision,
mpfrValue,
GMP_RNDN);
printf("buffer is: %s\n", buffer);
free(buffer);
mpfr_clear(mpfrValue);
return 0;
}
谢谢您的帮助