为什么32.32是双倍的,而不是浮动?

use*_*665 -2 c#

这是我的C#代码,它生成两个Circle类型的实例(c1,c2).

using System;
namespace ClassCircle
{
    class Circle
    {
        float radius;
        public Circle(float n)
        {
            Console.WriteLine("a circle of radius {0} has been created",n);
            radius = n;
        }
        public double getArea()
        {
            double area = Math.PI * radius * radius;
            return area;
        }
        public double getPerimeter()
        {
            double peri = 2 * Math.PI * radius;
            return peri;
        }
        public void printInfo()
        {
            Console.WriteLine("Perimeter = {0}", getPerimeter());
            Console.WriteLine("Area = {0}", getArea());
        }
        static void Main(string[] args)
        {
            Console.WriteLine("{0}", Math.PI.GetType());
            Circle c1 = new Circle(9);
            Circle c2 = new Circle(32.32);
            Console.WriteLine("data of c1");
            c1.printInfo();
            Console.WriteLine("data of c2");
            c2.printInfo();
            //Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

错误是 在此输入图像描述

这是创建第二个实例c2的地方.
描述说' 不能从double转换为float '.我无法理解,我的参数是32.32,我相信它是一个浮点数.

Bra*_*NET 9

当您编写十进制文字(例如32.32)时,编译器会自动将其视为double.

你需要明确地说它是一个浮点数,如下所示:

32.32f
Run Code Online (Sandbox Code Playgroud)

要么

(float)32.32
Run Code Online (Sandbox Code Playgroud)

请注意,您的其他线路通过字面整数9隐式强制转换为一个float(double不隐含转换成任何东西,看MSDN),所以它编译.