为什么我不能在SharpDevelop的这个小型C#程序中使用"float"而不是"double"?

use*_*746 -1 c# sharpdevelop c#-4.0

我是初学者.我刚刚在SharpDevelop上创建了一个小的C#程序,它只计算前几个整数的平方根.这里是:

public static void Main(string[] args)
    {

        int i;

        XXXXX[] t = new XXXXX[40];

        for(i=0; i<t.Length; i++)
        {
            t[i]=Math.Sqrt(i);
        }

        for(i=0; i<t.Length; i++)
        {
            Console.WriteLine(""+t[i]);
        }

        Console.ReadKey(true);
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是:

当我写"double"而不是"XXXXX"时,为什么我的程序工作但是当我写"float"而不是"XXXXX"时它不起作用?

我以为我听到我的老师说浮动和双重是相似的,除了双精度更高.所以我不明白为什么我不能使用float而不是double ...

Dav*_*idG 6

Math.Sqrt()double当你尝试将它分配给a时返回一个float,你得到一个编译错误.这是因为float精度低于double您可能会丢失细节.

请参阅floatdouble的文档.

您可以显式转换数字:

t[i]=(float)Math.Sqrt(i);
Run Code Online (Sandbox Code Playgroud)