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 +

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

代码中的这一行:

  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你期待什么?如果你想要小数,不要把它转换成整数