double to int cast and rounding issues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I have a question regarding the conversion of double to int. Considering
this little program:


#include <iostream>
using namespace std;

int main()
{
  double a = 50.0;
  double b = 48.7;
  
  double c = a - b;
  
  cout << c << endl;
  cout << c * 10 << endl;
  cout << static_cast<int>(c * 10) << endl;

  return 0; 
}


I get this result:
1.3
13
12 <--- why not 13?

1) I am aware I may touch here the problem of floating point
representation and that the 1.3 value - result of a subtraction - is not
exactly this one, but maybe  1.2999999... Is this the reason why the int
conversion transforms the "double" 13 into a "int" equal to 12 ? 

2) How to avoid this problem ? I'd like to be sure to round this number
correctly (with a precision of 1/10th, 1/100th, etc...).

I have tried to find relevant information regarding this issue but did
not find a clear answer,

Many thanks in advance,
Eric


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux