### float gets unwillingly outputted as int - using Operator Overloading Hey Guys,

I fooled a bit around with the Operator Overloading and stumbled across something I don't understand yet. I've uploaded this mini program here (http://ideone.com/Wu2Vh1) so you can see and execute it.

Now I have a method that calculates my float c from (a²*b² = c²) If I output it straight from that method, it will show the correct c including all decimal places.

 ``12345678910111213141516171819`` `````` class RightTriangle : public Shape { public: RightTriangle(float a, float b, int x, int y) : a_(a), b_(b), Shape(x, y) { } friend std::ostream& operator<< (std::ostream& stream, RightTriangle& test_class); int Hypothenuse() { float c = 0.0f; c = std::sqrt(a_*a_ + b_*b_); std::cout << "thats the standard c = " << c << std::endl; return c; } ``````

If I output it with my operator overloading function, the compiler interprets the "c" as an integer variable it seems, because every decimal place gets cut.

This happens here:

 ``123456789101112`` `````` std::ostream& operator<< (std::ostream& os, RightTriangle& test_class) { std::cout << "Thats the overloaded c: " << test_class.Hypothenuse() << std::endl; return os; } int main() { RightTriangle *test_class = new RightTriangle(2.0f, 3.0f, 4.0f, 5.0f); std::cout << *test_class;``````

Output will look like this:
 ``12`` ``````thats the standard c = 3.60555 Thats the overloaded c: 3``````

I don't really understand why the compiler does so. Would be great if you could help me out.

Edit: Solved - trivial, ofc I have to declare my method as float, if I want it to return a float.

TL;DR float c will be outputted as if it was an int, while using Operator Overloading - Help me to output it with all its decimal places
Last edited on int Hypothenuse() returns an int.
Topic archived. No new replies allowed.