不能让我简单的洛仑兹因子计算器小数工作。我在想什么?

问题描述 投票:0回答:3

我试图让计算在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)))));

            }



        }

    }
    }
c# calculator
3个回答
0
投票

如果您的号码的因素是高,我建议你用Decimal

小数有更高的精度,通常需要高精确度的货币(金融)的应用中使用。 Reference

除了洛仑兹因子使用qazxsw POI

1 / sqrt(1 - v*v)

1
投票

如果你想用小数来计算,那么你需要使用var calc = 1m / Convert.ToDecimal(Math.Sqrt(1 - speed1*speed1)); 数据类型而不是Double的。

一个Integer具有从-2147483648〜2,147,483,647的范围内和int具有范围从+ -5.0 X 10-324至+ -1.7 X 10308。

你看,一个double不能处理小数。


0
投票

当通过1代替平方根在c分裂,这意味着你测量速度在C为单位,不以m / s。因此,速度的数值必须是1的一小部分。然而,你的可变int是一个整数。

© www.soinside.com 2019 - 2024. All rights reserved.