Ввод только вещественных чисел

Как сделать чтобы можно было вводить только вещественные числа ?..

Console.Write("Введите количество строк матрицы: ");
                int n = int.Parse(Console.ReadLine());
                Console.Write("Введите количество столбцов матрицы: ");
                int m = int.Parse(Console.ReadLine());
                Console.WriteLine("Заполните матрицу: ");
                Matrix2 matrix = new Matrix2 (n, m);
 
 
                for (int i = 0; i < matrix.stroka; i++)
                {
                    for (int j = 0; j < matrix.stolbets; j++)
                    {
                        Console.Write("Введите элемент [{0},{1}] : ", i, j);
                        matrix[i, j] = double.Parse(Console.ReadLine());
                    }
                }
 
                Console.WriteLine("Матрица :");
                for (int i = 0; i < matrix.stroka; i++)
                {
                    for (int j = 0; j < matrix.stolbets; j++)
                    {
                        Console.Write(matrix[i, j]);
                    }
                    Console.WriteLine();
                }
 
                matrix.Method(); 
                matrix.Method2();  
 
                Console.ForegroundColor = ConsoleColor.Red;
                if (matrix.Method3())  
                {
                    Console.WriteLine("Матрица единичная");
                }
                else Console.WriteLine("Матрица не единичная");
 
                if (matrix.Method4() == true)   
                {
                    Console.WriteLine("Матрица диагональная");
                }
                else Console.WriteLine("Матрица не диагональная");
                Console.ResetColor();
 
                Console.WriteLine(matrix[0, 0]);
                Console.ReadKey();
            }
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(" Для повторного запуска нажмите Enter");
            Console.ResetColor();
            key = Console.ReadKey().Key;
            Console.Clear();
 
        }
        class Matrix2
        {
 
            private double[,] matrix;
            public int stroka, stolbets; 
            private int Length;
            int r = 0;
            bool a = true, t = false;
 
            public Matrix2(int stroka, int stolbets)
            {
                this.stroka = stroka; 
                this.stolbets = stolbets;
                matrix = new double[this.stroka, this.stolbets];
                Length = stroka * stolbets;
            }
            public double this[int index1, int index2]
            {
                get { return matrix[index1, index2]; } 
                set { matrix[index1, index2] = value; } 
            }
            public void Method() 
            {
                Console.ForegroundColor = ConsoleColor.Red;
                for (int i = 0; i < stroka; i++)
                {
                    for (int j = 0; j < stolbets; j++)
                    {
                        if (matrix[i, j] == 0)
                        { r += 1; }
                    }
                }
                if (r == stolbets * stroka)
                { Console.WriteLine("Матрица нулевая"); }
                else { Console.WriteLine("Матрица не нулевая"); }
                Console.ResetColor();
            }
 
            public void Method2() 
            {
                Console.ForegroundColor = ConsoleColor.Red;
                if (stroka == stolbets)
                {
                    Console.WriteLine("Матрица квадратная");
                }
                else Console.WriteLine("Матрица не квадратная");
                Console.ResetColor();
            }
            public bool Method3() 
            {
                if (stroka == stolbets)
                {
                    for (int i = 0; i < stroka; i++)
                    {
                        for (int j = 0; j < stolbets; j++)
                        {
                            if (i == j && matrix[i, j] != 1)
                            {
                                return false;
                            }
                            else if (i != j && matrix[i, j] != 0)
                            { return false; }
                        }
                    }
                    return true;
                }
                return false;
            }
            public bool Method4() 
            {
                if (stroka == stolbets)
                {
                    for (int i = 0; i < stroka; i++)
                    {
                        for (int j = 0; j < stolbets; j++)
                        {
                            if (i != j)
                            {
                                if (matrix[i, j] == 0)
                                {
                                    t = true;
                                }
                                else t = false;
                                break;
                            }
                        }
                    }
                }
                return t;
            }

Так сейчас же так и есть?

Если надо дать возможность повторить ввод при некорректном вводе, то например цикл с TryParse.

Там можно вводить целые и вещественные числа ,а мне нужно чтобы только вещественные

А смысл? 1 это ж будет 1.0, например.
При выводе округляйте до нужного числа знаков.

Standard numeric format strings | Microsoft Docs

		double num = 1;
		Console.WriteLine("{0:N2}", num); // 1.00