If you want to know the true answer, you should read What Every Computer Scientist Should Know About Floating-Point Arithmetic.

In short, although `double`

allows for **higher precision** in its representation, for certain calculations it would produce **larger errors**. The "right" choice is: **use as much precision as you need but not more** and **choose the right algorithm**.

Many compilers do extended floating point math in "non-strict" mode anyway (i.e. use a wider floating point type available in hardware, e.g. 80-bits and 128-bits floating), this should be taken into account as well. In practice, you can **hardly see any difference in speed** -- they are natives to hardware anyway.

Unless you have some specific reason to do otherwise, use double.

Perhaps surprisingly, it is double and not float that is the "normal" floating-point type in C (and C++). The standard math functions such as **sin** and **log** take doubles as arguments, and return doubles. A normal floating-point literal, as when you write **3.14** in your program, has the type double. Not float.

On typical modern computers, doubles can be just as fast as floats, or even faster, so performance is usually not a factor to consider, even for large calculations. (And those would have to be *large* calculations, or performance shouldn't even enter your mind. My new i7 desktop computer can do six billion multiplications of doubles in one second.)

Licensed under: CC-BY-SA with attribution

Not affiliated with: Stack Overflow