Why do I see a double variable initialized to some value like 21.4 as 21.399999618530273?

yesraaj picture yesraaj · Oct 7, 2008 · Viewed 16.7k times · Source
double r = 11.631;
double theta = 21.4;

In the debugger, these are shown as 11.631000000000000 and 21.399999618530273.

How can I avoid this?

Answer

Konrad Rudolph picture Konrad Rudolph · Oct 7, 2008

These accuracy problems are due to the internal representation of floating point numbers and there's not much you can do to avoid it.

By the way, printing these values at run-time often still leads to the correct results, at least using modern C++ compilers. For most operations, this isn't much of an issue.