我刚刚开始在大学使用C#和Visual Studio,并且正在努力使用Math.Ceiling
来使浮点值在输出前舍入到下一个整数。
Visual Studio说我缺少演员,但我真的不知道在哪里。这可能真的很简单,但是作为一个新手,我真的不知道从哪里开始。 显示的最后一行是我遇到问题的地方。
我可以和一个告诉我我要去哪里的人一起做
我尝试在float.Parse
周围使用Math.Ceiling
,但这显然不起作用
const float FencePanelWidth = 1.5f;
float GWidth;
float GLength;
float GPerimetre;
float FencePanelsNeed;
float FencePanelsNeed2;
Console.Write("");
Console.Write("");
GWidth = float.Parse(Console.ReadLine());
Console.Write("");
GLength = float.Parse(Console.ReadLine());
GPerimetre = (GLength * 2) + GWidth;
FencePanelsNeed = GPerimetre / FencePanelWidth;
FencePanelsNeed2 = Math.Ceiling(FencePanelsNeed);
如果FencePanelsNeed
是7.24,我希望FencePanelsNeed2
是8。
答案 0 :(得分:0)
Math.Ceiling
方法只有两个重载:
在您的情况下,它使用第二个重载(因为传递的float
值被强制转换为double
,因此返回double
。
您应该做的是将返回值强制转换为int
或float
:
FencePanelsNeed2 = (int)Math.Ceiling(FencePanelsNeed); // Or:
//FencePanelsNeed2 = (float)Math.Ceiling(FencePanelsNeed);
如果将其强制转换为int
,还可以将FencePanelsNeed2
声明为int而不是float。
请注意,如果将FencePanelsNeed2
声明为double
,则首先不会出现该错误,因为不需要强制转换。因此,仅取决于您要使用的类型。
答案 1 :(得分:0)
只需将其强制转换为int并加1,就可以正常工作
using System;
public class Program
{
const float FencePanelWidth = 7.24f;
public static void Main()
{
var FencePanelsNeed2 = (int)FencePanelWidth < FencePanelWidth ? (int)FencePanelWidth + 1 : (int)FencePanelWidth;
Console.WriteLine(FencePanelsNeed2);
}
}
for yourself试试。