43.52.4D.
43.52.4D.

Reputation: 980

C++ Program Outputting Wrong Number

This is my program:

 #include "stdafx.h"
 #include <iostream>

 using namespace std;

 double areaofcircle(double r)
 {
 return 3.14 * r * r;
 }

 int main()
 {
 cout << areaofcircle(5);
 }

I should be getting the output of "78.5" but I keep getting "78.512". What is going on?! I've also tried float, but I still get the same output.

Also just a side question, do I really need to add "return 0;" to the main function?

One more side question, do I need to write "using namespace std;" inside every function, or can I just write it outside of everything, like how I've been doing it.

Upvotes: 1

Views: 534

Answers (3)

Tod
Tod

Reputation: 8232

You're passing the literal for an integer (5) so somewhere an implicit conversion is required to turn it into a double. You would be better off passing 5.0. The C++ default for doubles requires no specifier so your 3.14 is fine. (specifying a float requires 3.14f). That said, I tried both with 5 and 5.0 and got 78.5 both times on my compiler.

How you're using the std namespace is fine, but as pointed out it does bring ALL of the standard namespace into scope. I see this a lot in teaching material. It is better to just use using std::cout;

or just explicitly add std::cout to all uses. However, there is nothing "wrong" from a compilation standpoint in the way you did it.

Upvotes: 1

Rich
Rich

Reputation: 4962

Tried a few experiments on VS 2008 to see if I could get a similar error. By changing pi to a float I do get 78.500002622604370 which is different but not the same as your issue. But I do get 78.5 when pi is a double.

I'd recommend you let us know which compiler and version you're using, then possibly someone may be able to help.

#include "stdafx.h"
#include <iostream>
const double pi = 3.14;


 double areaofcircle(double r)
 {
    return pi * r * r;
 }

int _tmain(int argc, _TCHAR* argv[])
{
    double temp = areaofcircle(5);
    std::cout << temp;
    return 0;
}

Upvotes: 1

Hrushikesh Kulkarni
Hrushikesh Kulkarni

Reputation: 301

I think you are doing something wrong. I tried the same on GCC compiler, and I do get 78.5. Which compiler are you using?

Regarding your other questions

  1. It is always a good idea to return the state of your program from main. Usually, you can return EXIT_SUCCESS if everything works okay, else you can return EXIT_FAILURE.

  2. No it is not necessary to include using namespace std. Instead, it is bad practice to pollute your standard namespace. You should include only those functions that you use very frequently.

To read more about C++. Check this link

Hope this helps.

Upvotes: 1

Related Questions