I have a problem with casting.

I have a class Complex, where a Complex object is a complex number. The real and complex parts are floats. I sum several complex numbers, and I know that this sum is always an integer. I want to convert it to a long. The problem is that even though the sum is 11 , when I cast it to a long the result it 10. Why?

Code:class Complex{ float r, c; //r is the real part, c the complex; r + ci public: Complex(){ r = 0; c = 0; } Complex(float real, float comp){ r = real; c = comp; } float getReal(){ return r; } float getComp(){ return c; } //additional irrelevant functions } long findKm(){ Comlex sum = //sum of several complex numbers that sums to a real number, which is an integer long Km = static_cast<long>(sum.getReal()) return Km }