C# - Math.Sqrt() 返回小数
C# - Math.Sqrt() returning decimals
在 C# 中是否有一种方法可以 return 计算带小数的数字的平方根。
每次我使用 Math.Sqrt() 它都不会 return 小数。
我的代码:
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()
操作。到目前为止一切顺利。
但是随后您将结果(几乎肯定有 Double
输出中表示的小数部分)转换为 Int32
。这会擦掉小数部分。
C# 有一些非常有用的格式化功能。阅读此页面上的示例。 https://msdn.microsoft.com/en-us/library/kfsatb94(v=vs.110).aspx 有可能使用
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);
在 C# 中是否有一种方法可以 return 计算带小数的数字的平方根。 每次我使用 Math.Sqrt() 它都不会 return 小数。
我的代码:
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()
操作。到目前为止一切顺利。
但是随后您将结果(几乎肯定有 Double
输出中表示的小数部分)转换为 Int32
。这会擦掉小数部分。
C# 有一些非常有用的格式化功能。阅读此页面上的示例。 https://msdn.microsoft.com/en-us/library/kfsatb94(v=vs.110).aspx 有可能使用
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);