import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();	//サイコロの面の数
		int K = sc.nextInt();	//得点
		double d = 0.0;	//勝つ確率
		int coin = 0;	//コインの回数記録
		int calc = 0;	//コインの回数計算
		for(int i = 1; i <= N; i++) {
			calc = i; coin = 0;
			for(;calc < K;coin++) calc *= 2;
			d += (1.0/N) * Math.pow((1.0/2), coin);
		}
		System.out.println(d);
	}

} import java.util.Scanner; Scanner java.util public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();	//サイコロの面の数
		int K = sc.nextInt();	//得点
		double d = 0.0;	//勝つ確率
		int coin = 0;	//コインの回数記録
		int calc = 0;	//コインの回数計算
		for(int i = 1; i <= N; i++) {
			calc = i; coin = 0;
			for(;calc < K;coin++) calc *= 2;
			d += (1.0/N) * Math.pow((1.0/2), coin);
		}
		System.out.println(d);
	}

} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();	//サイコロの面の数
		int K = sc.nextInt();	//得点
		double d = 0.0;	//勝つ確率
		int coin = 0;	//コインの回数記録
		int calc = 0;	//コインの回数計算
		for(int i = 1; i <= N; i++) {
			calc = i; coin = 0;
			for(;calc < K;coin++) calc *= 2;
			d += (1.0/N) * Math.pow((1.0/2), coin);
		}
		System.out.println(d);
	} main {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();	//サイコロの面の数
		int K = sc.nextInt();	//得点
		double d = 0.0;	//勝つ確率
		int coin = 0;	//コインの回数記録
		int calc = 0;	//コインの回数計算
		for(int i = 1; i <= N; i++) {
			calc = i; coin = 0;
			for(;calc < K;coin++) calc *= 2;
			d += (1.0/N) * Math.pow((1.0/2), coin);
		}
		System.out.println(d);
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc int K = sc.nextInt(); K sc.nextInt() sc.nextInt sc double d = 0.0; d 0.0 int coin = 0; coin 0 int calc = 0; calc 0 for(int i = 1; i <= N; i++) {
			calc = i; coin = 0;
			for(;calc < K;coin++) calc *= 2;
			d += (1.0/N) * Math.pow((1.0/2), coin);
		} int i = 1; int i = 1; i 1 i <= N i N i++ i++ i {
			calc = i; coin = 0;
			for(;calc < K;coin++) calc *= 2;
			d += (1.0/N) * Math.pow((1.0/2), coin);
		} {
			calc = i; coin = 0;
			for(;calc < K;coin++) calc *= 2;
			d += (1.0/N) * Math.pow((1.0/2), coin);
		} calc = i calc i coin = 0 coin 0 for(;calc < K;coin++) calc *= 2; ; calc < K calc K coin++ coin++ coin calc *= 2; calc *= 2 calc 2 d += (1.0/N) * Math.pow((1.0/2), coin) d (1.0/N) * Math.pow((1.0/2), coin) (1.0/N) 1.0 N Math.pow((1.0/2), coin) Math.pow Math (1.0/2) 1.0 2 coin System.out.println(d) System.out.println System.out System System.out d String[] args args public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();	//サイコロの面の数
		int K = sc.nextInt();	//得点
		double d = 0.0;	//勝つ確率
		int coin = 0;	//コインの回数記録
		int calc = 0;	//コインの回数計算
		for(int i = 1; i <= N; i++) {
			calc = i; coin = 0;
			for(;calc < K;coin++) calc *= 2;
			d += (1.0/N) * Math.pow((1.0/2), coin);
		}
		System.out.println(d);
	}

} public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();	//サイコロの面の数
		int K = sc.nextInt();	//得点
		double d = 0.0;	//勝つ確率
		int coin = 0;	//コインの回数記録
		int calc = 0;	//コインの回数計算
		for(int i = 1; i <= N; i++) {
			calc = i; coin = 0;
			for(;calc < K;coin++) calc *= 2;
			d += (1.0/N) * Math.pow((1.0/2), coin);
		}
		System.out.println(d);
	}

} Main
import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();	//サイコロの面の数
		int K = sc.nextInt();	//得点
		double d = 0.0;	//勝つ確率
		int coin = 0;	//コインの回数記録
		int calc = 0;	//コインの回数計算
		for(int i = 1; i <= N; i++) {
			calc = i; coin = 0;
			for(;calc < K;coin++) calc *= 2;
			d += (1.0/N) * Math.pow((1.0/2), coin);
		}
		System.out.println(d);
	}

}