Jaz*_*een 0 c# types unity-game-engine
我是 C# 的新手,我不知道为什么在这些代码行上出现以下错误。
“错误 CS0266:无法将类型 'double' 隐式转换为 'float'。存在显式转换(您是否缺少强制转换?)”
float rightEdgeOfFormation = (float) transform.position.x + (width * 0.5);
float leftEdgeOfFormation = (float) transform.position.x - (width * 0.5);
Run Code Online (Sandbox Code Playgroud)
我认为写作(浮动)是演员?
非常感谢!
类型转换在所有其他操作中具有最高优先级。因此,(float) transform.position.x在 之前进行评估+ (width * 0.5)。然而,(width * 0.5)是一个double表达式,因为常量0.5是一个double常量。(0.5f如果您希望它是 ,则应该使用它float。)并且在添加 afloat和 a 时double,C# 总是“提升” floatto double。所以,的结果float + double是 a double,然后它不能分配给 a float。
为了解决这个问题,无论是放在括号整个表达式铸造之前float,或者让你0.5一float写它作为常数0.5f。