class Program
{
static float vSphere(float radi)
{
float radius = Math.Pow(radi, 3); //line 14
float vol = (4 / 3) * 3.14 * radius; //line 15
return vol;
}
static void Main(string[] args)
{
// Work out the volume of sphere
Console.WriteLine("Please specify a radius: ");
float user_radius = float.Parse(Console.ReadLine());
float answer = vSphere(user_radius);
Console.WriteLine("The sphere is: ");
Console.WriteLine(answer);
}
}
这是我正在尝试编写的计算球体体积的程序的 C# 代码。
在第 14 行和第 15 行,有人告诉我不能从“double”隐式转换为“float”。我看不到我在哪里使用 double ,我需要使用 float ,因为用户可以输入像 3.147 这样的十进制数。
我做错了什么?
最佳答案
Math.Pow
方法总是返回一个 double
值,因此您需要将其转换回 float
:
float radius = (float)Math.Pow(radi, 3);
文字值 3.14
是一个 double
值。您可以使用 f
后缀使其成为 float
值:
float vol = (4 / 3) * 3.14f * radius;
请注意,表达式 4/3
是使用 int
值计算的,因此结果将为 1
,而不是 1.333333
如您所料。在那里也使用 float
值:
float vol = (4f / 3f) * 3.14f * radius;
正如 rbaleksandar 指出的那样,Math
类中有一个 pi 常量,您应该使用它而不是写出来。不过它是一个 double
值,因此您需要将其转换为 float
:
float vol = (4f / 3f) * (float)Math.PI * radius;
关于c# - 无法将 'double' 转换为 'float' 但我没有使用 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32297727/