2015-04-06 67 views
1

我有这个方法返回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 
+3

是'numerador'和'denominador'整数? – Pradhan 2015-04-06 05:59:51

+0

为了得到正确的结果,'d'是'double'是不够的,'numerador'和'denominador'之一应该是'double'。 – Maroun 2015-04-06 06:01:07

+1

使用'd = 1.0 * numerador/denominador;'或'd =((double)numerador)/ denominador;' – 2015-04-06 06:01:19

回答

1

从给定输出,似乎numeradordenominadorint秒。因此,将它们分成integer division(即仅包含整个部分),然后才被提升为double。您可以在潜水前通过明确铸造来避免这种情况:

d = ((double) numerador)/denominador; 
1

由于numeradordenominador都是整数类型,numerador/denomindor具有一体的类型为好。用整数除法,5/250。然后将该结果转换为double0.0。如果需要浮点除法,则需要使用明确的转换或使用适用的隐式转换来转换操作数。例如,

d = 1.0*numerador/denominador;