如何获得整数的-1?

时间:2015-01-14 14:50:58

标签: c++

我想要"我"转换为它的力量-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()吗?

2 个答案:

答案 0 :(得分:9)

您将整数除以整数,该整数始终为整数(即​​向零舍入)。因此,对于除{1(1)之外的所有1 / ii舍入为0。 然后结果被转换为浮点数(但它仍然是一个完整的数字)。

要解决这个问题,让分子或分母成为一个浮点数,因为那时结果将是一个浮点数:

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

答案 1 :(得分:3)

你的问题是(1 / i)是一个整数除法,1和i都是整数。 C和C ++中的整数除法具有整数结果,因此它向下舍入为0. static_cast()只会将该0转换为浮点数(0.0),因为它已经太晚了。

你需要做的是使用浮点除法,其中一个操作数需要是一个浮点数,例如1.0:写(1.0 / i)会给你一个浮点结果。 / p>