C++方法返回0
问题描述:
我有这个方法返回0,我不知道为什么。C++方法返回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
是int
秒。因此,将它们分成integer division(即仅包含整个部分),然后才被提升为double
。您可以在潜水前通过明确铸造来避免这种情况:
d = ((double) numerador)/denominador;
答
由于numerador
和denominador
都是整数类型,numerador/denomindor
具有一体的类型为好。用整数除法,5/25
是0
。然后将该结果转换为double
0.0
。如果需要浮点除法,则需要使用明确的转换或使用适用的隐式转换来转换操作数。例如,
d = 1.0*numerador/denominador;
是'numerador'和'denominador'整数? – Pradhan 2015-04-06 05:59:51
为了得到正确的结果,'d'是'double'是不够的,'numerador'和'denominador'之一应该是'double'。 – Maroun 2015-04-06 06:01:07
使用'd = 1.0 * numerador/denominador;'或'd =((double)numerador)/ denominador;' – 2015-04-06 06:01:19