function Main(input){
  //Dice and coin
  var N = input.split(" ")[0];
  var K = input.split(" ")[1];
  N = parseInt(N,10);
  K = parseInt(K,10);

  var win1 = 0;
  var win2 = 0;
  var ans = 0;

  if(N<K){
    for(i=1;i<=N;i++){
      var Num = 0;
      var cond = 0;
      while(cond<=K){
        Num += 1;
        cond = i*Math.pow(2,Num);
      }
      var lo = parseFloat((1/Math.pow(2,Num)).toFixed(10),10);
      var stn = parseFloat((1/N).toFixed(10),10);
      var a = (stn*lo).toFixed(12);
      win2 += parseFloat(a,10);
    }
    console.log(win2);

  }else{
    win1 = parseFloat(((N-K+1)/N).toFixed(10),10);
    for(i=1;i<K;i++){
      var Num = 0;
      var cond = 0;
      while(cond<=K){
        Num += 1;
        cond = i*Math.pow(2,Num);
      } 
      var lo = parseFloat((1/Math.pow(2,Num)).toFixed(10),10);
      var stn = parseFloat((1/N).toFixed(10),10);
      win2 += parseFloat((stn*lo).toFixed(10),10);
    }
    ans = parseFloat((win1 + win2),10).toFixed(10)
    console.log(ans);
  }
  
  
}     
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
