bignum.cpp

来自「一个用C++写的大数运算类」· C++ 代码 · 共 123 行

CPP
123
字号
#include "BigNum.h"
#include <math.h>

CBigNumber::CBigNumber()
{
	number=0;
	exponent=0;
};

CBigNumber::CBigNumber(float num)
{
	number=num;
	exponent=0;
	Convert();
};

CBigNumber::CBigNumber(float num,int exp)
{
	number=num;
	exponent=exp;
	Convert();
};

void CBigNumber::Convert()
{
	if(number==0) return;
	while(fabs(number)>=10)
	{
		number/=10;
		exponent+=1;
	}
	while(fabs(number)<1)
	{
		number*=10;
		exponent-=1;
	}
};

CBigNumber CBigNumber::operator+(const CBigNumber& b)
{
	CBigNumber result;
	int multiple;
	
	multiple=exponent-b.exponent;
	if(multiple>0)
	{
		result.number=number+b.number*pow(10,-multiple);
		result.exponent=exponent;
	}
	else
	{
		result.number=number*pow(10,multiple)+b.number;
		result.exponent=b.exponent;
	}
	
	result.Convert();
	return result;
};

CBigNumber CBigNumber::operator-(const CBigNumber& b)
{
	CBigNumber result;
	int multiple;
	
	multiple=exponent-b.exponent;
	if(multiple>0)
	{
		
		result.number=number-b.number*pow(10,-multiple);
		result.exponent=exponent;
	}
	else
	{
		result.number=number*pow(10,multiple)-b.number;
		result.exponent=b.exponent;
	}
	
	result.Convert();
	return result;
};

CBigNumber CBigNumber::operator*(const CBigNumber& b)
{
	CBigNumber result;
	
	result.number=number*b.number;
	result.exponent=exponent+b.exponent;

	result.Convert();
	return result;
};

CBigNumber CBigNumber::operator/(const CBigNumber& b)
{
	CBigNumber result;
		
	if (b.number==0) return 0;
	result.number=number/b.number;
	result.exponent=exponent-b.exponent;

	result.Convert();
	return result;
};

CBigNumber CBigNumber::operator=(const CBigNumber& b)
{
	number=b.number;
	exponent=b.exponent;
	
	return *this;
};

double CBigNumber::GetNumber()
{
	return number;
};

int CBigNumber::GetExp()
{
	return exponent;
};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?