Tag Archives: float

Why I choose double over float in C++

Why I choose double over float in C++

I am sure there is a better answer but I am basing on it this:

The default choice for a floating-point type should be double. This is also the type that you get with floating-point literals without a suffix or (in C) standard functions that operate on floating point numbers (e.g. exp, sin, etc.).

float should only be used if you need to operate on a lot of floating-point numbers (think in the order of thousands or more) and analysis of the algorithm has shown that the reduced range and accuracy don’t pose a problem.

long double can be used if you need more range or accuracy than double, and if it provides this on your target platform.

In summary, float and long double should be reserved for use by the specialists, with double for “every-day” use.

http://programmers.stackexchange.com/questions/188721/when-do-you-use-float-and-when-do-you-use-double

Join my FREE newsletter to learn more about c++ in automated trading

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!

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

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.

Be aware that the single / double issue is not from C++ but the machine architecture itself, you usually get exactly the same results from Excel VBA which in most other things has a very different view of the world.

A lot depends upon what you’re doing with it, errors accumulate, so you have to be careful when doing things where the i+1th result depends upon the i’th

 

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!

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

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!