2015-10-09 24 views
0

我遇到了C++中的數學問題。我使用的IDE是帶有GNU編譯器的Code :: Blocks。所以,問題是當我要求用戶輸入並且用戶給我一個大於10000的數字時,比如10001等等,系統返回6.9531e-308作爲輸出!我不知道這是什麼。使用PerCent的C++數學

#include <iostream> 

double moneyBonus (double money, double& bonus); 

int main() 
{ 
    double money, earnMoney, bonus; 

    std::cin >> money; 
    earnMoney = money * (40.0/100.0); 

    moneyBonus(money, bonus); 

    std::cout << bonus << std::endl; 

    return 0; 
} 

double moneyBonus(double money, double& bonus) 
{ 
    if (money >= 0 && money <= 1000) 
    { 
     bonus = money * (3.0/100.0); 
    } 
    else if (money > 1000 && money <= 2000) 
    { 
     bonus = money * (5.0/100.0); 
    } 
    else if (money > 2000 && money <= 4000) 
    { 
     bonus = money * (7.0/100.0); 
    } 
    else if (money > 4000 && money <= 10000) 
    { 
     bonus = money * (8.0/100); 
    } 
} 

編輯:解決! (我沒有找到任何按鈕來解決這個問題)

+0

那麼,您期待什麼價值?爲什麼? –

+2

您應該從函數'moneyBonus'返回一個值,或者將返回類型更改爲'void'。這不是問題的原因。 – Slava

+0

而不是'3.0/100.0',你可以使用0.03,它將返回完全相同的值。否則使用'(money * 3.0)/ 100.0' –

回答

2

問題是你沒有初始化變量bonus。另外,如果獎金大於10000,你的功能moneyBonus什麼都不做。因此你看到的輸出是未初始化的值,這是一個垃圾值。

要解決它,無論是做

double bonus = 0; // or something 

或者在您的moneyBonus功能添加else情況下,像

else 
{ 
    bonus = 0; // or whatever value your prefer 
} 

此外,無論是從moneyBonus函數返回所需的值,並使用它,或將函數的類型更改爲void

+0

根據變量'earnMoney'的存在''moneyBonus'最有可能應該返回'money - 獎金' – Slava

+0

@Slava:可以。我沒有在這方面的功能。儘管編輯答案。 – therainmaker

1

對於10000以上的值,變量「獎金」未初始化