的mpreal
是任意精度浮点数值类型。
因此,mpreal
数字可能比double
有更多的有效数字(甚至数百或千分之一)。这意味着它是毫无意义的回合mpreal
到double
显示之前 - 你将失去在这种情况下的所有原始准确性。
这是很容易在C++来显示mpreal
:
/* 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
。
有关mp格式的更多详细信息,请参阅MPFR documentation。
(我mpreal
类又名MPFR C++的作者)
你接受了[我的答案](http://stackoverflow.com/a/9627136/827263),但[帕维尔的答案](HTTP:// stackoverflow.com/a/9627660/827263)可能会更好(请参阅我的更新)。 – 2013-11-01 01:26:30