C++ 当我从一个函数返回一个double时,它会变成一个整数吗?

C++ 当我从一个函数返回一个double时,它会变成一个整数吗?,c++,C++,在函数distance下,我返回一个名为distan的double。但是当我回到main函数时,dis1[I]变成了一个整数。例如,如果distan=6.06,则调试时dis1[i]将仅为6。代码如下: #include <iostream> #include <cmath> #include<iomanip> using namespace std; /* * */ int distance(double x1,double x2,double y1

在函数
distance
下,我返回一个名为
distan
double
。但是当我回到
main
函数时,
dis1[I]
变成了一个整数。例如,如果
distan
=6.06,则调试时
dis1[i]
将仅为6。代码如下:

#include <iostream>
#include <cmath>
#include<iomanip>
using namespace std;

/*
 * 
 */
int distance(double x1,double x2,double y1,double y2){
    double k;
    k=pow((x1-x2),2)+pow((y1-y2),2);
    double distan;
    distan=sqrt(k);
    return distan;  
}
int main() {
    int n,k;

    double dis=0.00;
    cin>>n;
    double points[2][100]={0.0};
    for(int i=0;i<n;i++){
        for(int m=0;m<2;m++){
        cin>>points[m][i];}
    }
    double dis1[100]={0.0};
    int count=0;
    for(int i=0;i<n-1;i++){
        for(int r=1;r<n;r++&&count++)
        dis1[count]=distance(points[0][i],points[0][i+r],points[1][i],points[1][i+r]);

    }

    for(int i=0;i<=count;i++){
        if(dis1[i]>dis){
            dis=dis1[i];
        }
    }
    cout << fixed << setprecision(4) << dis << endl;


    return 0;
}
#包括
#包括
#包括
使用名称空间std;
/*
* 
*/
整数距离(双x1,双x2,双y1,双y2){
双k;
k=功率((x1-x2),2)+功率((y1-y2),2);
双区;
distan=sqrt(k);
返回区;
}
int main(){
int n,k;
双dis=0.00;
cin>>n;
双点[2][100]={0.0};
对于(int i=0;i点[m][i];}
}
双dis1[100]={0.0};
整数计数=0;

对于(int i=0;i,
distance
函数的返回类型为
int

int distance(double x1,double x2,double y1,double y2){
^^^

将其更改为
double
如果要返回
double
请检查返回函数的类型
distance
,它是
int
,将其更改为
double
如下更改函数

double distance(double x1,double x2,double y1,double y2){
    double k;
    k=pow((x1-x2),2)+pow((y1-y2),2);
    double distan;
    distan=sqrt(k);
    return distan;  
}

当您将double值返回给Function时,如果您需要double,则Function返回类型应为double


double距离(double-x1、double-x2、double-y1、double-y2)

您只需更新返回类型的函数即可

double distance(double x1,double x2,double y1,double y2){
    double k;
    k=pow((x1-x2),2)+pow((y1-y2),2);
    double distan;
    distan=sqrt(k);
    return distan;  
}

在整数函数“distance”的最后一行,double被强制为整数:

…这就是它变成整数的地方。在执行隐式类型强制时,编译器应该给您一个警告。不这样做的语言更好

return distan;