fixed< T, N > Class Template Reference

Implement a fixed-point number class template. Values have N places after the decimal point. All arithmetic follows the usual rules. More...

#include <fixed.hpp>

List of all members.

Public Types

typedef T value_type
 Type of the actual value.

Public Member Functions

 fixed ()
 Default constructor initializes to zero.
 fixed (value_type integer, value_type fraction)
 fixed (value_type integer)
 Construct from an integer with no fractional part.
 fixed (double value)
 Construct by rounding off a floating point number.
std::string as_string () const
template<class Char, class Traits>
bool read (std::basic_istream< Char, Traits > &strm)
double as_long_double () const
 Convert to long double.
double as_double () const
 Convert to double.
float as_float () const
 Convert to float.
value_type round () const
value_type integer () const
 Return the integer part (which is the same as trunc()).
value_type fraction () const
 Return the fractional part, e.g., 3 for 12.03.
fixedoperator+= (fixed f)
 Addition assignment operator.
fixedoperator-= (fixed f)
 Subtraction assignment operator.
fixedoperator *= (fixed f)
 Multiplication assignment operator.
fixedoperator/= (fixed f)
 Division assignment operator.
void negate ()
 Negate this value.
fixedoperator++ ()
 Pre-increment.
fixed operator++ (int)
 Post-increment.
fixedoperator-- ()
 Pre-decrement.
fixed operator-- (int)
 Post-decrement.
value_type value () const
 Return the internal value.

Static Public Attributes

static value_type const places = N
 number of decimal places
static value_type const places10 = static_cast<typename fixed<T,N>::value_type>(std::pow(10.0, double(places)))
 10places


Detailed Description

template<class T, int N>
class fixed< T, N >

Implement a fixed-point number class template. Values have N places after the decimal point. All arithmetic follows the usual rules.

Listing 49-5. Changing fixed from a Class to a Class Template

Definition at line 25 of file fixed.hpp.


Constructor & Destructor Documentation

template<class T, int N>
fixed< T, N >::fixed ( value_type  integer,
value_type  fraction 
) [inline]

Construct from separate integer and fractional parts, e.g., initialize to 123.45 with fixed(123, 45). Initialize to 12.07 with fixed(12, 7).

Definition at line 108 of file fixed.hpp.

References fixed< T, N >::places10.


Member Function Documentation

template<class T, int N>
std::string fixed< T, N >::as_string (  )  const [inline]

Convert to a string.

Returns:
a string representation of the value, e.g., "123.04"

Definition at line 219 of file fixed.hpp.

References fixed< T, N >::fraction(), fixed< T, N >::integer(), and fixed< T, N >::places.

template<class T, int N>
template<class Char, class Traits>
bool fixed< T, N >::read ( std::basic_istream< Char, Traits > &  strm  )  [inline]

Read from a stream. Overwrite this value with the value read from the stream.

Parameters:
strm the stream to read
Returns:
true for success or false for failure

Definition at line 294 of file fixed.hpp.

References fixed< T, N >::fraction(), fixed< T, N >::integer(), fixed< T, N >::places, and fixed< T, N >::places10.

Referenced by operator>>(), and currency< T, N >::read().

template<class T, int N>
fixed< T, N >::value_type fixed< T, N >::round (  )  const [inline]

Return just the integer part, rounded off to the nearest integer. If the value lies equidistant between two integers, round even numbers up and odd numbers down (banker's rounding).

Definition at line 202 of file fixed.hpp.

References fixed< T, N >::fraction(), fixed< T, N >::integer(), fixed< T, N >::places10, and fixed< T, N >::value().

Referenced by currency< T, N >::round().


The documentation for this class was generated from the following file:
Generated on Sun Nov 30 10:03:13 2008 for Project 3 - Currency Type by  doxygen 1.5.3