Define a class, which implements arithmetic with arbitrary precision

Hi everyone!
I'm reading a book and doing some exercises in this book. One of them is: define a class, which implements arithmetic (+, -, /, *) with arbitrary precision. This is a new type with just some arithmetic operations. With type double we also can do some arithmetic but with a definite precision.
Well, to do arbitrary precision arithmetic in C++, I think we need to develop a class such as 'Big Float'. I find it hard to believe they'd expect a beginner like me to do this as it's really a job for a mathematical specialist.
[code]#include "stdafx.h"
using namespace std;

class Number{
string _numbers;
Number(const string& num) : _numbers(num){}
friend string ConvertToString(double value);
void print();
//add operator
Number operator+(Number rhsNumber);

Number Number::operator+( Number rhsNumber)
Number temp;
temp._numbers =ConvertToString(atof(this->_numbers.c_str())+atof(rhsNumber._numbers.c_str()));
return temp;
void Number::print()
string ConvertToString(double value)
std::stringstream ss;
ss << setprecision(15)<<value;
return ss.str();
int _tmain(int argc, _TCHAR* argv[])
Number a="1.21111111111111111111111111111111111112222";
Number b="2.1111111";
Number c=a+b;
return 0;
The thing is: suppose I'm an user. So I can use a Number object with arbitrary length, after computing the result should be saved with the precision that I've gave the Number object (in this situation the length of result should be saved).
But in my program it depends on setprecision(int n). The user has no choice. and it's a pointless.
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!