C# 为什么32.32是双精度的,而不是浮动的?
这是我的C#代码,它生成两个c1,c2)类型为圈的实例C# 为什么32.32是双精度的,而不是浮动的?,c#,C#,这是我的C#代码,它生成两个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
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();
}
}
}
错误是
这是创建第二个实例c2的地方
说明中说“无法从双精度转换为浮点”。我不明白,我的参数是32.32,我相信它是一个浮点。你给它传递了一个
双精度
,它想要一个浮点。您需要将数字输入为32.32f
,以使其有效,否则十进制数字将假定为double
。当您编写十进制文字(例如32.32
)时,编译器会自动假定它为double
您需要明确地说它是一个float,如下所示:
32.32f
或
请注意,您的另一行传递整数文本9
,它可以隐式转换为float
(double
不会隐式转换为任何内容,请参阅),因此它会编译。要将值定义为float,您需要在其后面加上f
-请参阅本文
在您的情况下,您希望使用:
Circle c2 = new Circle(32.32f);
使用32.32f
。如果没有f
(或f
),它将被解释为双重
。为了将来的参考,这个标题实际上没有说明。比如“为什么32.32是双精度的,而不是浮动的?”会更好。(编辑以修复,请在将来编写更好的标题)。
Circle c2 = new Circle(32.32f);