求调和级数的和,n为1到20000之间的整数,结果

为什么输入任何数,结果都是1.000

#include <iostream>
#include <iomanip>
using namespace std;

int NN(int n) {
    int x = 1;
    float sum = 0.000;
    while (x <= n)
        {
            sum += 1 / x;
            x++; 
        }
    cout << setiosflags(ios::fixed) << setprecision(2) << std::fixed << sum;
    return 0;
}
int main() {
    int n;
    while (1) 
    {
        cout << "请输入1—20000之间的一个整数:"; cin >> n; cout << endl;
        if ((n >= 1) && (n <= 20000)) {
            cout << NN(n) << endl; 
            break;
        }
        else { cout << "输入错误,请重新输入" << endl; }
    }
       
}