高精度运算
此文主要给出了高精度运算的实现细节,并将此封装。
#include <string.h>
#include <iostream>
using namespace std;
#define max 1000
/*
* This class implements addition, substraction, multiple operation,
* which aim to orient to the big integer.
* The detail as follows.
* This version are only suitable for positive integer.
*
*/
class Integer {
public:
/**
* The basic part of Integer.
*/
Integer(string orig) { m_data = orig; }
friend ostream &operator<<(ostream &out, Integer orig) {
out << orig.m_data;
return out;
}
public:
/**
* Implement Addition
* The basic thought is to transfer the string to array
* and operate array so that we can get the answer string.
*
* @param Int_a Integer a
* @param Int_b Integer b
*
* @return answer string
*/
friend string operator+(Integer Int_a, Integer Int_b) {
size_t a_len = Int_a.m_data.length();
size_t b_len = Int_b.m_data.length();
int a_vec[max] = {
0}, b_vec[max] = {
0}, c_vec[max] = {
0};
/**
* Transfer the string to Array
* Pay attention to the position of corresponding element in string.
* We wanna operate the Integer from the beginning.
*/
reverse(Int_a.m_data.begin(), Int_a.m_data.end());
for (int i = 0; i < a_len; i++) {
a_vec[i] = Int_a.m_data[i] - '0';
}
reverse(Int_b.m_data.begin(), Int_b.m_data.end());