是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++的作者)