C# 如何转换十进制类型?
所以我有一个十进制类型的问题。 我的任务: 描述 三维空间中有一个点和一条线。找出他们之间的距离。 输入: 九个实坐标,即:C# 如何转换十进制类型?,c#,.net,types,C#,.net,Types,所以我有一个十进制类型的问题。 我的任务: 描述 三维空间中有一个点和一条线。找出他们之间的距离。 输入: 九个实坐标,即: 方向向量的长度大于1e-8。 输出: 实数,给定点与直线之间的距离。 例如: 输入: 1.0 1.0 1.0 2.0 1.0 1.0 0.0 0.0 1.0 输出: 1 我的代码: static void Main(字符串[]args) { var input=Console.ReadLine(); var numbers=input.Split(“”)。选择
static void Main(字符串[]args)
{
var input=Console.ReadLine();
var numbers=input.Split(“”)。选择(x=>decimal.Parse(x)).ToArray();
var m0=新[]{numbers[0],numbers[1],numbers[2]};
var m1=新[]{数[3],数[4],数[5]};
var s=新[]{numbers[6],numbers[7],numbers[8]};
小数点[]m1m0=新的小数点[3];
对于(int i=0;i,因为只有当值是整数时才需要小数点,如果值是小数,则保留数字,请按如下操作-
if (d % 1 == 0)
{
Console.WriteLine(String.Format("{0:0.0}", d));
}
else
{
Console.WriteLine(d);
}
格式字符串“0.0########”
剪切所有尾随零,但保证小数点后至少有一位数字
可能的输入和输出:
Math.Sqrt(2);
1.41421356
Math.Sqrt(0.02);
0.14142136
Math.Sqrt(1);
1.0
Math.Sqrt(0.0001);
0.01
我认为这不是转换问题,而是显示问题。如果希望它始终显示1,我会尝试Console.WriteLine(d.ToString(“0.0”);
decimal@jdweng所以它不是working@Knoop但是它是我的四舍五入结果,我不需要它当你想要什么的时候?超过一个小数位,或者只是值被削减到一个小数位(因此1.09变为1.0)?如果将第一个输入值更改为2.0,结果将是sqrt(2)。这是一个无理值(小数位数无限)。您希望看到多少?
The direction vector of the line.
static void Main(string[] args)
{
var input = Console.ReadLine();
var numbers = input.Split(' ').Select(x => decimal.Parse(x)).ToArray();
var m0 = new[] {numbers[0],numbers[1],numbers[2] };
var m1 = new[] { numbers[3], numbers[4], numbers[5] };
var s= new[] { numbers[6], numbers[7], numbers[8] };
decimal[] m1m0=new decimal[3];
for(int i =0;i<3;i++)
{
m1m0[i] = m1[i] - m0[i];
}
decimal[] m1m0s = new decimal[3];
m1m0s[0] = m1m0[1] * s[2] - m1m0[2] * s[1];
m1m0s[1] = m1m0[2] * s[0] - m1m0[0] * s[2];
m1m0s[2] = m1m0[0] * s[1] - m1m0[1] * s[0];
var d = GetAbs(m1m0s[0], m1m0s[1], m1m0s[2]) / GetAbs(s[0], s[1], s[2]);
Console.WriteLine((decimal)d);
}
static decimal GetAbs(decimal a , decimal b , decimal c )
{
var d = a * a + b * b + c * c;
double e = (double)d;
var temp= Math.Sqrt(e);
decimal sqrt = Convert.ToDecimal(temp);
return sqrt ;
}
if (d % 1 == 0)
{
Console.WriteLine(String.Format("{0:0.0}", d));
}
else
{
Console.WriteLine(d);
}
Console.WriteLine(d.ToString("0.0#######"));
Math.Sqrt(2);
1.41421356
Math.Sqrt(0.02);
0.14142136
Math.Sqrt(1);
1.0
Math.Sqrt(0.0001);
0.01