kcalc
knumber.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _KNUMBER_H
00021 #define _KNUMBER_H
00022
00023 #include <kdemacros.h>
00024
00025 #include "knumber_priv.h"
00026
00027 class QString;
00028
00029 class _knumber;
00030
00065 class KDE_EXPORT KNumber
00066 {
00067 public:
00068 static KNumber const Zero;
00069 static KNumber const One;
00070 static KNumber const MinusOne;
00071 static KNumber const Pi;
00072 static KNumber const Euler;
00073 static KNumber const NotDefined;
00074
00089 enum NumType {SpecialType, IntegerType, FractionType, FloatType};
00090
00108 enum ErrorType {UndefinedNumber, Infinity, MinusInfinity};
00109
00110 KNumber(qint32 num = 0);
00111 KNumber(quint32 num);
00112 KNumber(quint64 num);
00113
00114 KNumber(double num);
00115
00116 KNumber(KNumber const & num);
00117
00118 KNumber(QString const & num);
00119
00120 virtual ~KNumber();
00121
00122 KNumber const & operator=(KNumber const & num);
00123
00127 NumType type(void) const;
00128
00139 static void setDefaultFloatOutput(bool flag);
00140
00148 static void setDefaultFractionalInput(bool flag);
00149
00155 static void setDefaultFloatPrecision(unsigned int prec);
00156
00165 static void setSplitoffIntegerForFractionOutput(bool flag);
00166
00179 QString const toQString(int width = -1, int prec = -1) const;
00180
00188 KNumber const abs(void) const;
00189
00201 KNumber const sqrt(void) const;
00202
00216 KNumber const cbrt(void) const;
00217
00225 KNumber const integerPart(void) const;
00226
00227 KNumber const power(KNumber const &exp) const;
00228
00229 KNumber const operator+(KNumber const & arg2) const;
00230 KNumber const operator -(void) const;
00231 KNumber const operator-(KNumber const & arg2) const;
00232 KNumber const operator*(KNumber const & arg2) const;
00233 KNumber const operator/(KNumber const & arg2) const;
00234 KNumber const operator%(KNumber const & arg2) const;
00235
00236 KNumber const operator&(KNumber const & arg2) const;
00237 KNumber const operator|(KNumber const & arg2) const;
00238 KNumber const operator<<(KNumber const & arg2) const;
00239 KNumber const operator>>(KNumber const & arg2) const;
00240
00241 operator bool(void) const;
00242 operator qint32(void) const;
00243 operator quint32(void) const;
00244 operator quint64(void) const;
00245 operator double(void) const;
00246
00247 bool const operator==(KNumber const & arg2) const
00248 { return (compare(arg2) == 0); }
00249
00250 bool const operator!=(KNumber const & arg2) const
00251 { return (compare(arg2) != 0); }
00252
00253 bool const operator>(KNumber const & arg2) const
00254 { return (compare(arg2) > 0); }
00255
00256 bool const operator<(KNumber const & arg2) const
00257 { return (compare(arg2) < 0); }
00258
00259 bool const operator>=(KNumber const & arg2) const
00260 { return (compare(arg2) >= 0); }
00261
00262 bool const operator<=(KNumber const & arg2) const
00263 { return (compare(arg2) <= 0); }
00264
00265 KNumber & operator +=(KNumber const &arg);
00266 KNumber & operator -=(KNumber const &arg);
00267
00268
00269
00270
00271 private:
00272 void simplifyRational(void);
00273 int const compare(KNumber const & arg2) const;
00274
00275 _knumber *_num;
00276 static bool _float_output;
00277 static bool _fraction_input;
00278 static bool _splitoffinteger_output;
00279 };
00280
00281
00282
00283 #endif // _KNUMBER_H