2015-11-12 69 views
-2

我的代码没有返回double值z,而是只返回1,找不到原因。 //(它看起来像你的文章大多是代码,请添加一些更详细)C++,函数不返回双

#include <iostream> 
#include <fstream> 

using namespace std; 
double road(int s, int v, int max) 
{ 
    double t; 
    t = (s/v); 
    return t; 
} 
int main() 
{ 
    int s[2]={0}; 
    int v[2]={0}; 
    int max; 
    double z; // result of function 
    ifstream fd; 
    fd.open("u1.txt"); 
    fd >> max; 
    for (int i = 0; i < 2; i++) 
    { 
     fd >> s[i] >> v[i]; 
     z = road(s[i], v[i], max); 
     cout << z << " "; 
    } 

    fd.close(); 
    return 0; 
} 
+1

你的函数*不会*返回一个'double'。你可以说因为你声明了它的返回类型是'double'。 –

+0

“s/v”表达式的计算结果为“int”。无论你将它分配给双精度型,它仍然是一个“int”! –

+0

得到了想法,改变了双道(int s,int v,int max)到双重道路(double s,double v,int max),谢谢你们 – ParanoidParrot

回答

0

试图改变像

double road(int s, int v, int max) 
{ 
    double t; 
    t = (s/(double)v); 
    return t; 
} 

INT/INT你的方法会导致一个整数。所以你需要将分子或分母作为双精度。