### 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.

* http://www.nyxdata.com/nysedata/default.aspx?tabid=993&id=739

* http://www.nyxdata.com/nysedata/default.aspx?tabid=993&id=29

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!