Не могу заставить мой простой калькулятор факторов Лоренца работать с десятичными числами.Чего мне не хватает? - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь сделать калькулятор, который вычисляет коэффициент Лоренца в c #.Но, похоже, он не работает с десятичными знаками.Я только сделал первую часть калькулятора:

static void Main(string[] args)
        {

            int c = 299792458;

            Console.Write("speed: ");
            string speed = Console.ReadLine();
            Console.Write("Gammafaktor: ");
            string Gammafaktor = Console.ReadLine();


            {
            }
            int gamma1 = Convert.ToInt32(Gammafaktor);
            int speed1 = Convert.ToInt32(speed);

            if (gamma1 != 0)
                {
                Console.WriteLine(1 / (Math.Sqrt(1 - ((speed1 * speed1) / (1)))));

            }



        }

    }
    }

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019

Если коэффициент вашего числа будет высоким, я советую вам использовать Decimal

Десятичные дроби имеют гораздо более высокую точность и обычно используются в денежных (финансовых) приложениях, требующих высокой степениточности. Ссылка

Помимо коэффициента Лоренца используется 1 / sqrt(1 - v*v)

var calc = 1m / Convert.ToDecimal(Math.Sqrt(1 - speed1*speed1));
0 голосов
/ 05 февраля 2019

Когда вы делите на 1 вместо c под квадратным корнем, это означает, что вы измеряете скорость в единицах c, а не в м / с.Следовательно, числовое значение скорости должно быть частью 1. Однако ваша переменная speed1 является целым числом.

0 голосов
/ 05 февраля 2019

Если вы хотите рассчитать с десятичными знаками, тогда вам нужно использовать Double тип данных вместо Integer.

. int имеет диапазон от -2 147 483 648 до 2 147 483 647 и double имеет диапазон от + -5,0 x 10-324 до + -1,7 x 10308.

Вы видите, что int не может обрабатывать десятичные дроби.

...