1.问题:大数计算可能超出数据类型范围
当单独计算 ,因为 ,double的最大取值为1.79769e+308,所以 肯定超过了double的表示范围。
同样,对于300!也是如此。
那我们应该怎么去计算和存储结果呢?
2.解决方案
从数学角度出发,对于超级大的数,运算方式、运算规律等肯定保持不变的。
很多时候,我们主要是利用相关的定理、公式进行简化或者极限处理。
由于我项目里的精度要求就 e-10,于是,可以采用相对宽松的方式解决这个问题:
科学计数法!
3.代码实现
#ifndef __BigNumeric_h
#define __BigNumeric_h
#include <cmath>
template<typename _T>
class BigNumeric
{
private:
_T mantissa;
int exponent;
public:
BigNumeric(_T num)
{