2015-04-06 71 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;