-14

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 + b2;
        Int32 c = Convert.ToInt32(Math.Sqrt(c2));
        output.Text = Convert.ToString(c);
4

2 回答 2

2

您的代码中的这一行:

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

会给你一个有用的结果。

于 2015-09-13T12:08:45.330 回答
1

转换为整数 (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);
于 2016-03-02T16:54:55.327 回答