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);