我是C#的新手,我无法解决为什么我在这些代码行上遇到以下错误。
"错误CS0266:无法隐式转换类型' double'到了'漂浮'。存在显式转换(您是否错过了演员?)"
float rightEdgeOfFormation = (float) transform.position.x + (width * 0.5);
float leftEdgeOfFormation = (float) transform.position.x - (width * 0.5);
我以为写作(浮动)是演员吗?
非常感谢!
答案 0 :(得分:4)
类型转换具有所有其他操作的最高优先级。因此,在(float) transform.position.x
之前评估+ (width * 0.5)
。但是,(width * 0.5)
是double
表达式,因为常量0.5
是double
常量。 (如果您想要0.5f
,则应该使用float
。)在添加float
和double
时,C#始终"促进" float
到double
。因此,float + double
的结果是double
,然后无法将其分配给float
。
要修复此问题,请在转换为float
之前将整个表达式放在括号中,或者将0.5
float
设为0.5f
,然后将其设为 10 is for Oct
27 is day
1500 is 3:00 PM
。
答案 1 :(得分:3)
您需要乘以0.5,当您使用花车时,您需要将f
放在最后。
这将有效:
float rightEdgeOfFormation = transform.position.x + (width * 0.5f);
float leftEdgeOfFormation = transform.position.x - (width * 0.5f);
答案 2 :(得分:2)
尝试:
float rightEdgeOfFormation = (float) (transform.position.x + (width * 0.5));
float leftEdgeOfFormation = (float) (transform.position.x - (width * 0.5));
你只是在施放transform.position.x而不是整个表达式&表达式中的其他内容导致计算以double形式完成。
答案 3 :(得分:1)
float rightEdgeOfFormation = (float)transform.position.x + ((float)width * 0.5F);
float leftEdgeOfFormation = (float)transform.position.x - ((float)width * 0.5F);
请参阅https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/float
答案 4 :(得分:1)
我认为这只是你的括号。 float rightEdgeOfFormation = (float) (transform.position.x + (width * 0.5));
答案 5 :(得分:0)
使用以下
float rightEdgeOfFormation = Convert.ToSingle(transform.position.x + (width * 0.5));
float leftEdgeOfFormation = Convert.ToSingle(transform.position.x - (width * 0.5));