擅长:python、mysql、java
<P> C++使用<a href="http://en.wikipedia.org/wiki/Floating_point" rel="nofollow">floating-point</a>类型(如^ {CD1>},^ {CD2>})来存储浮点值并执行浮点运算。这些类型的大小(直接影响其精度)是由实现定义的(通常不会获得超过128位的精度)。而且,精度是一个相对的术语:当你的数字增长时,你的精度越来越低。你知道吗</p>
<>所以,回答你的问题:用标准C++类型存储任意精度的数字是不可能的。为此,需要使用多精度库,例如<a href="http://www.boost.org/doc/libs/1_58_0/libs/multiprecision/doc/html/index.html" rel="nofollow">Boost.Multiprecision</a>。你知道吗</p>
<p>示例代码使用助推。多精度地址:</p>
<pre><code>#include <boost/multiprecision/cpp_dec_float.hpp>
#include <iostream>
int main()
{
using namespace boost::multiprecision;
typedef number<cpp_dec_float<100> > cpp_dec_float_100; // 100 decimal places
cpp_dec_float_100 N = 2;
cpp_dec_float_100 result = sqrt(N); // calls boost::multiprecision::sqrt
std::cout << result.str() << std::endl; // displays the result as a string
}
</code></pre>
<p>如果使用Python,则可以使用<code>decimal</code>模块:</p>
<pre><code>from decimal import *
getcontext().prec = 100
result = Decimal.sqrt(Decimal(2))
print("Decimal.sqrt(2): {0}".format(result))
</code></pre>