mercredi 22 juin 2016

C++ double rounds up when unwanted


I am writing a program in C++ for the distance formula. The answer to x1=0 y1=0 x2=1 y2=1 should be around 1.14, however the answer printed out is 2.00. Every single variable is stored as double I don't know what is going wrong here. Here is my code, and thank you for any help!!

//  main.cpp
//  Chap6_42
//
//  Created on 10/21/14.
//

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double distance(double,double,double,double); //distance prototype


int main()
{
    double d = 0;

    double x1 = 0; //coordinate x1
    double x2 = 0; //coord x2
    double y1 = 0; //coord y1
    double y2 = 0; //coord y2




    cout << "Enter four cords (x1,y1,x2,y2) to find the distance between them " << endl;
    cout << "x1 = ";
    cin >> x1;
    cout << "y1 = ";
    cin >> y1;
    cout << "x2 = ";
    cin >> x2;
    cout << "y2 = ";
    cin >> y2;

    d = distance (x2,x1, y2,y1); //calls to distance function, performs computations

    cout << "The distance is " << fixed << setprecision(2) << showpoint << d << endl;



    return 0;
}
double distance(double x2,double x1,double y2,double y1) //distance function header
{

    return sqrt(pow(x2-x1,2.0)) + sqrt(pow(y2-y1,2.0)); //distance function computations


}
                                                //function definition

Aucun commentaire:

Enregistrer un commentaire