是mpreal任意精度浮点数值类型。
因此,mpreal数字可能具有比double. 这意味着在显示之前四舍五入是没有意义的 mpreal —— double在这种情况下,您将失去所有原始精度。
mpreal在 C++中很容易显示:
/* 100-digits accurate pi */
mpreal pi = mpfr::const_pi(mpfr::digits2bits(100));
/* Show 60-digits of pi */
cout.precision(60);
cout << pi;
但是,您也可以使用它printf(首先转换为字符串):
/* Display all digits (default formatting) */
printf("pi = %s\n", pi.toString().c_str());
/* Custom format, 60 digits */
printf("pi = %s\n", pi.toString("%.60RNf").c_str());
/* Using native printf from MPFR*/
mpfr_printf("pi = %.60RNf\n", pi.mpfr_srcptr());
多精度数字的格式规范与标准相同,但舍入规范除外。您可以安全地使用四舍五入到最接近的值,RN如上面的示例所示。
MPFR 文档中提供了有关 mp 格式的更多详细信息。
(我是mpreal类又名MPFR C++的作者)