⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bignum.cpp

📁 在计算机科学中有一类分常重要的代码工具是抽象的大数运算类
💻 CPP
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -