import sys

sys.setrecursionlimit(10**7)
def I(): return int(sys.stdin.readline().rstrip())
def MI(): return map(int,sys.stdin.readline().rstrip().split())
def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))  #空白あり
def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし
def S(): return sys.stdin.readline().rstrip()
def LS(): return list(sys.stdin.readline().rstrip().split())  #空白あり
def LS2(): return list(sys.stdin.readline().rstrip())  #空白なし


N,K = MI()
ans = 0
if N >= K:
    ans += (N-K+1)/N
for i in range(1,min(K-1,N)+1):
    a = i
    r = 0
    while a <= K-1:
        a *= 2
        r += 1
    ans += 1/(N*2**r)

print(ans) import sys sys sys.setrecursionlimit(10**7) sys.setrecursionlimit sys setrecursionlimit 10**7 10 7 def I(): return int(sys.stdin.readline().rstrip()) I def MI(): return map(int,sys.stdin.readline().rstrip().split()) MI def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))  #空白あり LI def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし LI2 def S(): return sys.stdin.readline().rstrip() S def LS(): return list(sys.stdin.readline().rstrip().split())  #空白あり LS def LS2(): return list(sys.stdin.readline().rstrip())  #空白なし LS2 N,K = MI() N MI() MI K ans = 0 ans 0 if N >= K:
    ans += (N-K+1)/N N >= K N K ans += (N-K+1)/N ans (N-K+1)/N N-K+1 N-K N K 1 N for i in range(1,min(K-1,N)+1):
    a = i
    r = 0
    while a <= K-1:
        a *= 2
        r += 1
    ans += 1/(N*2**r) i range(1,min(K-1,N)+1) range 1 min(K-1,N)+1 min(K-1,N) min K-1 K 1 N 1 a = i a i r = 0 r 0 while a <= K-1:
        a *= 2
        r += 1
     a <= K-1 a K-1 K 1 a *= 2 a 2 r += 1 r 1 ans += 1/(N*2**r) ans 1/(N*2**r) 1 N*2**r N 2**r 2 r print(ans) print ans def LS2(): return list(sys.stdin.readline().rstrip())  #空白なし def LS2(): return list(sys.stdin.readline().rstrip())  #空白なし LS2 ans += 1/(N*2**r) 1/(N*2**r) ans def MI(): return map(int,sys.stdin.readline().rstrip().split()) def MI(): return map(int,sys.stdin.readline().rstrip().split()) MI K = MI() MI() K def LS(): return list(sys.stdin.readline().rstrip().split())  #空白あり def LS(): return list(sys.stdin.readline().rstrip().split())  #空白あり LS N,K = MI() MI() N def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし LI2 a *= 2 2 a ans += (N-K+1)/N (N-K+1)/N ans r += 1 1 r def S(): return sys.stdin.readline().rstrip() def S(): return sys.stdin.readline().rstrip() S def I(): return int(sys.stdin.readline().rstrip()) def I(): return int(sys.stdin.readline().rstrip()) I ans = 0 0 ans a = i i a r = 0 0 r def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))  #空白あり def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))  #空白あり LI
import sys

sys.setrecursionlimit(10**7)
def I(): return int(sys.stdin.readline().rstrip())
def MI(): return map(int,sys.stdin.readline().rstrip().split())
def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))  #空白あり
def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし
def S(): return sys.stdin.readline().rstrip()
def LS(): return list(sys.stdin.readline().rstrip().split())  #空白あり
def LS2(): return list(sys.stdin.readline().rstrip())  #空白なし


N,K = MI()
ans = 0
if N >= K:
    ans += (N-K+1)/N
for i in range(1,min(K-1,N)+1):
    a = i
    r = 0
    while a <= K-1:
        a *= 2
        r += 1
    ans += 1/(N*2**r)

print(ans)
