2015-01-14 69 views
0

我想把「我」轉換成它的力量-1。但是下面的代碼返回零。如何讓一個整數的冪-1?

#include <iostream> 
using namespace std; 
int main() 
{ 
    int k; 
    cin>>k; 
    float reverse; 
    for (int i=1; i<=k; i++) 
    { 
     cout<<i<<"\t"; 

     reverse = static_cast<float> (1/i); 

     cout<< reverse<<endl; 
    } 
} 

我應該使用pow()嗎?

回答

9

您正在整數除以一個整數,它總是導致一個整數(即舍入爲零)。因此1/i對於除1(1是1)以外的所有i都舍入爲0。 然後結果被轉換爲一個浮點數(但它仍然是一個整數)。

爲了解決這個問題,讓任何分子或分母爲浮子,因爲那樣的話,結果將是一個浮動:

reverse = 1.0f/i; // numerator is float and denominator is integer, therefore 
        // the result is a float 
3

您的問題是(1/i)爲一個整數除法,既1,我是整數。 C和C++中的整數除法具有整數結果,所以它被四捨五入爲零。static_cast()只會將該0轉換爲浮點數(0.0),因爲它已經太晚了。

你需要做的是使用浮點除法,其中一個操作數需要是一個浮點數,例如1.0:寫(1.0/i)會給你一個浮點結果。

相關問題