C++ float/double in financial applications such as that in stock exchanges and/or brokerage house

(Last Updated On: May 4, 2011)
Learn the Secret

Get  our 2 Free Books

Get these now which land directly to their inbox.

Use of C++ float/double in financial applications such as that in stock exchanges and/or brokerage houses.

Is the rounding gap resulting from using float in C++ considered immaterial/acceptable? Is it a normal practice? What about using a customized fixed-point class to do such math? What are your opinions? Thanks a lot in advance

Yes the rounding gap using float can and will have a impact, and for any financial application I would personally suggest NOT using float/double for money storage/calculations. You will regret it in the end.

Depending on the number of decimal points you wish to use, would depend on your solution.
Lets say you are only interested in 2 decimal points, in this case a long (or int) would work.
ie the number \$100.10 would be stored as 10010.
Giving a:
Int range: -21,474,836.48 to 21,474,836.47
Long range: –92,233,720,368,547,758.08 to 92,233,720,368,547,758.07

If you want more than 2 decimal points then make sure you use atleast long.
If the number of decimal points would not leave enough for your upper limit, then separate the whole and decimal into 2 int (or long).

Note:
No matter which of the above I use, I always design 1 Money class that handles all the maths, string to display etc. This allows much easier to change the structure if you find you choose incorrectly at the beginning

It depends on what type of finance you are doing. But be ready to familiarize yourself with terms like tick size, tick value, tick size denominator and various numerators.

E.g.

In addition, there are techniques like http://en.wikipedia.org/wiki/Guard_digit

NOTE I now post my TRADING ALERTS into my personal FACEBOOK ACCOUNT and TWITTER. Don't worry as I don't post stupid cat videos or what I eat!
This entry was posted in Quant Development and tagged , , , , , , , on by .