C++ 方法 returns 0
C++ method returns 0
我有这个方法returns 0,我不知道为什么。
方法:
double Fraccion::getDivision()
{
double d;
d = numerador/denominador;
cout << fixed << numerador << "/" << denominador << "=" << d << endl;
return d;
}
这是输出控制台:
Introduce el numerador //This is in the main file
5
Introduce el denominador //This is in the main file
25
5/25=0.000000
Division: 0.000000
因为numerador
和denominador
是整型,所以numerador/denomindor
也是整型。使用整数除法,5/25
是 0
。然后将此结果转换为 double
0.0
。如果要进行浮点除法,则需要使用显式强制转换或使用适用的隐式转换来转换操作数。例如,
d = 1.0*numerador / denominador;
从给定的输出来看,numerador
和 denominador
似乎是 int
。因此,将它们划分将在 integer division 中完成(即只取整个部分),然后才提升为 double
。您可以通过在潜水前显式转换来避免这种情况:
d = ((double) numerador)/denominador;
我有这个方法returns 0,我不知道为什么。
方法:
double Fraccion::getDivision()
{
double d;
d = numerador/denominador;
cout << fixed << numerador << "/" << denominador << "=" << d << endl;
return d;
}
这是输出控制台:
Introduce el numerador //This is in the main file
5
Introduce el denominador //This is in the main file
25
5/25=0.000000
Division: 0.000000
因为numerador
和denominador
是整型,所以numerador/denomindor
也是整型。使用整数除法,5/25
是 0
。然后将此结果转换为 double
0.0
。如果要进行浮点除法,则需要使用显式强制转换或使用适用的隐式转换来转换操作数。例如,
d = 1.0*numerador / denominador;
从给定的输出来看,numerador
和 denominador
似乎是 int
。因此,将它们划分将在 integer division 中完成(即只取整个部分),然后才提升为 double
。您可以通过在潜水前显式转换来避免这种情况:
d = ((double) numerador)/denominador;