2014-11-16 54 views
1

我想創建一個簡單的程序,它需要用戶輸入的攝氏值,並將其轉換爲華氏。C++簡單的華氏轉換

#include <iostream> 

using namespace std; 

int main() 
{ 
    float celsius, farenheit; 
    cout << "Enter a temperature in farenheit "; 
    cin >> farenheit; 
    celsius = (farenheit - 32) * (5/9); 
    cout << celsius; 
    return 0; 
} 

它總是打印一個值爲0,這是爲什麼?

+3

可能是因爲它假設爲'int'。改爲使用'5.0/9.0'。 –

+1

如果您嘗試過[簡化您的示例](http://stackoverflow.com/help/mcve),您會注意到'(5/9)'爲零。 – Beta

回答

5

這是因爲您乘以5/9,由於整數除法而爲零。

如果更改括號這樣

celsius = ((farenheit - 32) * 5)/9; 

,你會得到正確的結果。

由於括號爲(5/9),編譯器在執行乘法之前計算該值。由於(5/9)是一個整數表達式,因此編譯器會執行整數除法,表示小數部分被丟棄。結果,所有適當的分數變成零。

的另一種方法來解決這個問題是通過附加.0它們迫使C++使用通過使一個或兩個數字的浮點常數(具體地,double類型的常量)浮點除法,例如:

celsius = (farenheit - 32) * (5.0/9);