ffead.server.doc
Bigdecimal.h
1 /*
2  Copyright 2009-2012, Sumeet Chhetri
3 
4  Licensed under the Apache License, Version 2.0 (the "License");
5  you may not use this file except in compliance with the License.
6  You may obtain a copy of the License at
7 
8  http://www.apache.org/licenses/LICENSE-2.0
9 
10  Unless required by applicable law or agreed to in writing, software
11  distributed under the License is distributed on an "AS IS" BASIS,
12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  See the License for the specific language governing permissions and
14  limitations under the License.
15 */
16 /*
17  * Bigdecimal.h
18  *
19  * Created on: 06-Mar-2013
20  * Author: sumeetc
21  */
22 
23 #ifndef BIGDECIMAL_H_
24 #define BIGDECIMAL_H_
25 #include "Bigint.h"
26 
27 class Bigdecimal {
28  vector<int> parts;
29  bool isPositive;
30  int decimalDigits;
31  int decimalStartsAt;
32  void create(string value);
33  void checkAndSetIfZero();
34 public:
35  Bigdecimal();
36  Bigdecimal(string value);
37  void add(Bigdecimal number);
38  Bigdecimal operator+(Bigdecimal number);
39  Bigdecimal operator-(Bigdecimal number);
40  Bigdecimal operator*(Bigdecimal number);
41  Bigdecimal operator/(Bigdecimal number);
42  Bigdecimal& operator++();
43  Bigdecimal& operator+=(Bigdecimal number);
44  Bigdecimal& operator--();
45  Bigdecimal& operator-=(Bigdecimal number);
46  friend bool operator== (Bigdecimal &lhs, Bigdecimal &rhs);
47  friend bool operator!= (Bigdecimal &lhs, Bigdecimal &rhs);
48  friend bool operator< (Bigdecimal &lhs, Bigdecimal &rhs);
49  friend bool operator<= (Bigdecimal &lhs, Bigdecimal &rhs);
50  friend bool operator> (Bigdecimal &lhs, Bigdecimal &rhs);
51  friend bool operator>= (Bigdecimal &lhs, Bigdecimal &rhs);
52  void subtract(Bigdecimal number);
53  void multiply(Bigdecimal number);
54  void divide(Bigdecimal number, int precision=15);
55  static int compare(Bigdecimal number1, Bigdecimal number2);
56  int compare(Bigdecimal number);
57  string toString();
58  virtual ~Bigdecimal();
59 };
60 
61 #endif /* BIGDECIMAL_H_ */