我试图让计算在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)))));
}
}
}
}
如果您的号码的因素是高,我建议你用Decimal
小数有更高的精度,通常需要高精确度的货币(金融)的应用中使用。 Reference
除了洛仑兹因子使用qazxsw POI
1 / sqrt(1 - v*v)
如果你想用小数来计算,那么你需要使用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
不能处理小数。
当通过1代替平方根在c分裂,这意味着你测量速度在C为单位,不以m / s。因此,速度的数值必须是1的一小部分。然而,你的可变int
是一个整数。