C#-Math.Sqrt()返回小数
在C#中有没有一种方法可以返回带小数的数字的平方根。 每次我使用Math.Sqrt()时,它都不会返回小数 我的代码:C#-Math.Sqrt()返回小数,c#,floating-point,type-conversion,implicit-conversion,math.sqrt,C#,Floating Point,Type Conversion,Implicit Conversion,Math.sqrt,在C#中有没有一种方法可以返回带小数的数字的平方根。 每次我使用Math.Sqrt()时,它都不会返回小数 我的代码: Int32 a = Convert.ToInt32(input1.Text); Int32 b = Convert.ToInt32(input2.Text); //a*a + b*b = c*c Int32 a2 = a * a; Int32 b2 = b * b; Int32 c2 = a2 +
Int32 a = Convert.ToInt32(input1.Text);
Int32 b = Convert.ToInt32(input2.Text);
//a*a + b*b = c*c
Int32 a2 = a * a;
Int32 b2 = b * b;
Int32 c2 = a2 + b2;
Int32 c = Convert.ToInt32(Math.Sqrt(c2));
output.Text = Convert.ToString(c);
代码中的这一行:
Int32 c = Convert.ToInt32(Math.Sqrt(c2));
执行两个类型转换。其中一个是隐式的:c2
,一个Int32
项,被转换为Double
,因此可以由Math.Sqrt()
对其进行操作。到目前为止还不错
但随后您将结果转换为Int32
,该结果几乎肯定在Double
输出中有一个小数部分。这就去掉了小数部分
C#具有一些非常有用的格式化功能。阅读本页上的示例。有可能使用
output.Text = Math.Sqrt(c2).ToString("F4");
会给你一个有用的结果 强制转换为整数(Int32)会删除数字的小数部分
int number = (Int32) 3.14159; // value of number will be 3 (not 3.14159)
// Do this instead
double c = Math.Sqrt(c2); // will give you the result you want
output.Text = Convert.ToString(c);
这些方法返回一个double,因此它肯定包含结果的小数部分。你是如何使用它的?十进制不是桌面硬件的功能。您需要将其从浮点或双精度转换为十进制。但是一些特殊的cpu架构可能具有定点算术的能力,在这种情况下,您需要实现自己的sqrt。这个问题有几个答案:您显然正在将
Math.sqrt()
的结果转换为Int32
——一个整数,即没有小数。因为您的问题值得这样做。您有int32c=Convert.ToInt32(Math.Sqrt(c2));问我的小数点出了什么问题需要向下的投票。那我怎么能过来呢this@trickrider2002你期待什么?如果你想要小数,不要把它转换成整数