#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <utility>
#include <cctype>
using namespace std;

#define rep(i,n) for(int (i)=0; (i)<(int)(n); ++(i))
#define foreach(c,i) for(__typeof((c).begin()) i=(c).begin();i!=(c).end();i++)

const int MAX_N = 100002;
const int MAX_M = 15;

double dp[MAX_N][MAX_M];
double pow_[MAX_M];
vector<double> ans(MAX_N);

void main2() {
  rep(i,MAX_M) pow_[i] = pow(0.5, i);
  dp[0][0] = 1.0;
  double sums = 0, *prev = dp[0], *next = dp[1];
  
  for (int i = 0; i < MAX_N; ++i) {
    fill(next, next + MAX_M, 0);
    for (int j = 0; j < MAX_M-1; ++j) {
      if (prev[j]) {
        sums += prev[j] * pow_[j];
        if (j == 0) {
          next[1] += prev[j];
        } else {
          next[j+1] += prev[j] * pow_[j];
          next[0] += prev[j] * (1 - pow_[j]);
        }
      }
    }
    ans[i+1] = sums;
    swap(prev, next);
  }
}

int main() {
  main2();
  int n;
  while (scanf("%d",&n),n) printf("%lf\n",ans[n]);
  return 0;
}
    