Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

CDFValue - Fractional/Decimal conversion class

0.00/5 (No votes)
22 Nov 2002 2  
A class used to manipulate and convert decimal and fractional data.

Sample Image - DFValue_ss.jpg

As a remodeling professional and an avid woodworking enthusiast I realized, after many hours of searching the net for woodworking software that there was a need for applications that specialize in this area. Therefore I came to the conclusion that I would either have to wait for someone else to develop them, pay their price and hope they had the functionality that I needed or develop them myself and integrate the functionality I needed into my apps.

I determined that the first place to start was to develop a class to handle decimal and fractional data with the ability to convert between the two. Therefore I created the CDFValue class. This class encapsulates this functionality and provides a rich set of methods providing the user with the ability to handle decimal, fractional and a mixture of both data types and to be able to manipulate and convert this data.

In the example below the local variable gbl_precision is used to define the required precision. In my applications I use this variable as a global and allow the user to set it to either 1/16", 1/32" or 1/64". In the example I set it at 1/64". If units not given they are assumed to be in feet.

int gbl_precision = 64;
			
CDFValue DFVal1;
CDFValue DFVal2;
CDFValue DFRes;
CString  strVal1 = "1'6\"";
			
DFVal1.SetDFValue(strVal1);
DFVal2.SetDFValue(1.5);

DFRes = DFVal1 + DFVal2;  //DFRes = 3'

DFRes = DFVal1 - DFVal2;  //DFRes = 0

DFRes = DFVal1 * DFVal2;  //DFRes = 2'3"

DFRes = DFVal1 / DFVal2;  //DFRes = 1

DFVal1 == DFVal2;		  //TRUE

As you can see from the example the CDFValue class is easy to use and very versatile. Values may be in fractional

80", 5', 5'6", 5'6-1/2"

in decimal

.15, 1, 1.5

or a mixture of the two

12.5", 1.5'

Thats all there is to it!

You may use this class freely, the only thing I ask is that if you like this class and use it you give credit where credit is due. i.e. Treat me as I would treat you.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here