/*
問題文
すぬけ君は 1 〜 N の整数が等確率で出る N 面サイコロと表と裏が等確率で出るコインを持っています。
すぬけ君は、このサイコロとコインを使って今から次のようなゲームをします。
まず、サイコロを 1 回振り、出た目を現在の得点とする。
得点が 1 以上 K−1 以下である限り、すぬけ君はコインを振り続ける。
表が出たら得点は 2 倍になり、裏が出たら得点は 0 になる。得点が 0 になった、もしくは K 以上になった時点でゲームが終了する。
このとき、得点が K 以上である場合すぬけ君の勝ち、 0 である場合すぬけ君の負けである。
N と K が与えられるので、このゲームですぬけ君が勝つ確率を求めてください。
*/

function f(a, b) {
  var ans = 0;
  while (Math.pow(2, ans) * a < b) {
    ans += 1
  }
  return ans
}

function main(input) {
  const inputChars = input.split(" ");
  const N = parseInt(inputChars[0]);
  const K = parseInt(inputChars[1]);

  var sum = 0;
  for (var n = 1; n < N + 1; n++) {
    var fnk = f(n, K);
    sum += Math.pow(0.5, fnk);
  }
  console.log(sum / N);
}
main(require('fs').readFileSync('/dev/stdin', 'utf8'));