当我从函数返回一个双精度值时,它变成了一个整数

When I return a double from a function it becomes a integer?

本文关键字:一个 整数 函数 双精度 返回      更新时间:2023-10-16

在函数distance下,我返回一个称为distandouble。但是当我回到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;
}

另外,这个代码是计算两组点(x和y)之间的最大距离,请帮助。

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;  
}

当你向function返回双精度值时,如果你需要双精度值,则函数返回类型应为double。

double distance(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"的最后一行将双精度类型强制转换为整型:

return distan;  

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

相关文章: