intとdoubleを比較したい関数のジェネリック版なのですが
main関数のmaxとしてintもdoublenに型変換すれば9も9.0になるだけなので
このやり方で例外もでなくなったのですが、そもそもdouble同士を比較する方法はあるのでしょうか?

static int max<type,type_b>(type a , type b) 
    where type : IComparable
    where type_b : IComparable
{
    int x = a.CompareTo(b);
    return x;
}

static void Main(string[] args)
{
    int x = 9;
    double y = 9.3;
    int e = max<double,double>(x,y);
    Console.WriteLine(e);

    Console.ReadKey();
}