的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